画像からテキストへの変換とは
画像からテキストへの変換は OCR(光学文字認識)と呼ばれます。コンピューターが画像の中の形を見て、どれが文字かを判断し、選択、編集、検索、コピーができるテキストに変えます。
画像の中に文字が閉じ込められているときは、いつでも役に立ちます。エラーメッセージのスクリーンショット、看板の写真、スキャンした手紙、プレゼンのスライド、送られてきた画像の中の引用文などです。手で打ち直す代わりに、コンピューターに読ませるわけです。
日本語の文字も読み取れます。このページを開くと「画像内の言語」は最初から日本語になっているので、ひらがな、カタカナ、漢字が写った画像をそのまま渡すだけです。日本語の文の中に英単語や数字が少し混じる程度なら、日本語のままで読み取れることがほとんどです。英文の資料やマニュアル、英語のエラーメッセージなど英語が中心の画像は、「英語」に切り替えた方が正確になります。韓国語と中国語(簡体字・繁体字)にも対応しています。
日本語の読み取りには注意点もあります。いちばん得意なのは、スクリーンショットや印刷物のような横書きの活字です。縦書きの文章や手書きの文字は、横書きの活字に比べて精度が下がります。また、読み取った日本語の文字の間に余分なスペースが入ることがあります。その場合は、結果を確認しながら手で直してください。
変換ツールの使い方
- 画像内の言語を選びます。このページでの初期設定は日本語です。ほかに英語、韓国語、中国語(簡体字)、中国語(繁体字)、スペイン語、フランス語、ドイツ語、イタリア語、ポルトガル語、オランダ語、ヒンディー語を選べます。
- 次の3つの方法のいずれかで画像を渡します。
- ここに画像をドロップするか、ファイルを選択と書かれた欄に画像ファイルをドロップします。
- 画像を選択を押し、1つまたは複数のファイルを選びます。
- スクリーンショットをコピーし、ページ上のどこかで Ctrl+V(Mac では Cmd+V)を押すか、画像を貼り付けを押します。
- 進行状況のバーを確認します。読み取りエンジンと言語データをダウンロードする必要があるため、最初の読み取りは時間がかかります。2回目以降は、1枚あたり数秒で終わります。
- 抽出したテキストで結果を確認します。その場で編集できます。
- コピーを押すか、ダウンロードを押して image-text.txt として保存します。
複数の画像を一度に選ぶと順番に読み取られ、各画像のテキストが空行をはさんで下に追加されていきます。テキストの下には単語数と文字数、そしてまとめて読み込んだ画像の平均の信頼度が表示されます。日本語のようにスペースで区切らない文章は、ブラウザーの単語分割機能(Intl.Segmenter)で単語に分けて数えます。「は」「の」のような助詞も1語になるので、日本語の単語数は目安として見てください。
うまくいく画像、いかない画像
| 画像 | 期待できる結果 |
|---|---|
| Web ページ、アプリ、文書のスクリーンショット | とても良い。くっきりしたコントラストの高い文字が最も読み取りやすい。 |
| 明るい場所で真正面から撮った印刷物の写真 | 良い。数字と句読点は確認を。 |
| スキャンした手紙や書類 | 入力された文字なら良い。書類の枠や罫線で余計な文字が入ることがある。 |
| 斜めから撮った、影がある、ピントが合っていない写真 | まちまち。できればトリミングや撮り直しを。 |
| ごちゃごちゃした写真や模様の上の文字 | 悪い。背景がエンジンを混乱させる。 |
| 縦書きの日本語 | まちまち。横書きより精度が下がる。 |
| 手書き | 悪い。ただし、とてもきれいなブロック体や楷書は例外。 |
| 小さな画面に1ページ全体を収めたスクリーンショットのような、とても小さな文字 | 悪い。拡大してから近くでスクリーンショットを撮り直す。 |
仕組み
このページでは、Hewlett-Packard で最初に開発され、後に一般公開された有名なオープンソースの OCR エンジン Tesseract を使っています。ここでは、Web ブラウザー向けに作られた Tesseract.js を通じて動作します。
最初の読み取りを始めると、ブラウザーは cdn.jsdelivr.net から3つのものをダウンロードします。小さな補助スクリプト、エンジン本体、そして選んだ言語のデータファイルです。これらはプログラムと言語のファイルだけです。ブラウザーがキャッシュに保存するので、2回目以降の読み取りはずっと速く始まります。別の言語を選ぶと、その言語のデータファイルがダウンロードされます。
その後エンジンは、画像の中の文字の行を見つけ、単語と文字に分け、学習データから覚えた形と比べます。これはすべてお使いのパソコンやスマートフォンの中で行われます。画像は端末のメモリーから読み込まれ、アップロードされることはないので、個人情報が写ったスクリーンショットにも安心して使えます。
うまく読み取るコツ
- 文字の部分だけにトリミングする。 画像をドロップする前に、文字の周りの枠、写真、アイコンを取り除いてください。
- 大きいほど良い。 大きくくっきりした文字は、小さな文字よりずっとよく読み取れます。スクリーンショットを撮る前にページを拡大してください。
- 正しい言語を選ぶ。 日本語の画像は「日本語」、中国語の画像は簡体字か繁体字を選んでください。漢字は日本語と中国語で共通するものが多いですが、かなや字形の違いがあるため、合った言語の方がずっと正確です。é、ñ、ü などのアクセント付きの文字も、対応する言語を選んだ方がはるかに正確に読み取れます。
- 写真はまっすぐに撮る。 カメラをページの真上に構え、文字でフレームを埋め、影を避けてください。
- 後で整える。 写真から読み取ったテキストには、文の途中に改行が入っていることがよくあります。改行削除ツールに貼り付けて行をつなげ、プレーンテキスト変換でおかしな引用符や空白を直してください。
- 校正する。 OCR の誤りは本物の単語のように見えます。たとえば「rn」が「m」に、「0」が「O」に読まれることがあります。数字、名前、メールアドレスは2回読み直してください。
スマートフォンで HEIC 形式で保存された写真は、ほとんどのブラウザーで読み込めません。先に JPG として保存または共有してください。
画像からテキストを取り出すほかの方法
Google ドキュメント。 画像を Google ドライブにアップロードし、右クリックして「アプリで開く」から「Google ドキュメント」を選びます。新しいドキュメントの画像の下にテキストが表示されます。日本語の画像にも使えますが、画像は Google にアップロードされます。
Microsoft OneNote と Word。 Windows 版の OneNote では、画像を貼り付けて右クリックし、画像からテキストをコピーするメニューを選びます。Word は PDF を開いて編集可能な文書に変換でき、きれいなスキャンほどうまくいきます。
スマートフォン。 最近の iOS や Android では、写真やスクリーンショットの中の文字を直接選択できます。写真アプリやギャラリーアプリで文字を長押ししてください。日本語の文字もこの方法で読み取れることが多いです。
コード。 Tesseract は Windows、macOS、Linux にインストールでき、コマンドラインで tesseract image.png output と実行すると、テキストが output.txt に保存されます。Python のプログラムでは、pytesseract パッケージを通じて使われることがよくあります。