画像から文字起こし(OCR)
すべてブラウザ内で動きます。ファイルやデータが外部に送られることはありません。
このツールについて
画像をこのページにドロップすると、その中の文字が隣のパネルに現れ、そのままコピーできます。スクリーンショットはクリップボードから直接貼り付けられるので、いちいちファイルに保存するより速く済みます。PNG、JPEG、WebP、BMP に対応しています。
どれくらい正確に読めますか
読み取りの精度は、ほぼ画像の質で決まります。スクリーンショットや印刷物のきれいなスキャンは、文字がくっきりしていて背景も均一なので、かなり正確に読めます。スマートフォンで撮った写真は難しくなります。影、紙のたわみ、手ぶれ、テカリはどれも精度を下げますし、斜めから撮ったページは行がばらばらになって返ってくることがあります。手書き文字は対象外です。ここで動いているエンジンは活字だけを学習しているためです。結果が粗いときは、設定をいじるより、明るい場所で真上から撮り直すほうが効きます。
テキストパネルのヘッダーにある言語メニューは、最初は自動検出になっています。まず画像を読み取り、返ってきた文字を見て、別の言語らしいと判断すれば正しいモデルでもう一度読み直します。どの言語に落ち着いたかはメニューの表示が切り替わるので分かります。ただし自動検出には限界があります。ごく短い文字列では判断材料が足りませんし、文字の種類が違うと完全にお手上げです。日本語の画像を英語などのラテン文字モデルで読むと、検出器にも判別できないノイズしか返ってきません。そういうときは自分で言語を選んでください。選び間違えると出力は静かに壊れます。間違った言語のモデルは、エラーを出す代わりに、それらしい単語をでっち上げるからです。切り替えると読み込み済みの画像がもう一度読み直されます。
画像はどこかに送信されますか
いいえ。認識処理は Tesseract を WebAssembly にコンパイルしたものを tesseract.js 経由で使い、すべてブラウザーの中で動きます。画像はお使いの端末の canvas に読み込まれ、同じ端末のワーカースレッドから文字が返ってきます。サーバーは関与しないので、請求書でも身分証のスキャンでも診断書でも、記録される場所がありません。ページを開いたあとネットワークを切っても、モデルがキャッシュ済みなら動き続けます。
最初の1回だけ時間がかかるのはなぜですか
言語ごとにおよそ 1〜3 MB の学習済みモデルが必要で、それに認識エンジン本体が加わります。ブラウザーは最初の読み取り時にこれらをダウンロードし、IndexedDB に保存します。そのため 2 枚目からはほぼ待ち時間なく始まります。まだ使っていない言語に切り替えたときは、その言語の分だけもう一度ダウンロードが走ります。長辺が非常に大きい画像は読み取り前に縮小されるので、1200 万画素の写真でも数秒短く済み、通常の文字サイズなら精度も落ちません。キャッシュの置き場所が気になる方は MDN の IndexedDB の解説をご覧ください。
よくある使い道は、スクリーンショットからコードや住所を書き写す、スキャンした本のページから引用を取り出す、レシートを表計算ソフトに打ち直す、元の文書がもう誰の手元にもない画像から文字を拾い出す、といったところです。