OCRの精度を上げる方法|写真・スキャン・スクショ
OCRの間違いのほとんどは画像に原因があります。読み取る前に見直すこと、効果のある設定、自動補正の働き、そして結果をすばやく確認する方法を紹介します。
更新日
OCRが文字を読み間違えるとき、エンジンそのものが主な原因であることはまれです。たいていは、画像から得られる情報が少なすぎたのです。文字が小さすぎる、ページに影がかかっている、角度が傾いている、少しぶれている、といった具合です。画像に1分かけるほうが、テキストの修正に費やす時間よりずっと節約になります。
以下のコツは、効果の大きい順におおむね並べています。それぞれがなぜ重要なのかは、OCRの仕組みで、エンジンが画像をどう処理するかとあわせて説明しています。
文字を十分な大きさにする
大事なのはカメラの画素数ではなく、1文字あたりに何ピクセル使われているかです。机全体を高解像度で撮った写真でも、1枚の紙に書かれた文字は数ピクセルの高さしかないことがあります。
- 文字で画面を埋める。 必要な範囲が画面の大部分を占めるまで、カメラを近づけましょう。
- スクリーンショットの前に画面を拡大する。 ページや文書を先に拡大してからキャプチャします。高解像度のディスプレイで撮ったスクリーンショットも、同じ内容を低解像度の画面で撮ったものよりよく読み取れます。
- 途中で画像を縮小しない。 メッセージアプリやメールソフトの中には、画像を圧縮したりサイズを変えたりするものがあります。元のファイルを送るか、直接転送しましょう。
- 300dpiでスキャンする。 とても小さな文字なら400〜600dpiが効果的です。設定についてはスキャンした文書から文字を抽出する方法で説明しています。
小さな画像をあとから拡大すると少しは役立ちます。OCRエンジンは、文字が極端に小さくないほうがうまく働くからです。ただし、カメラが捉えなかった細部を付け足すことはできません。
ページに均一に光を当てる
- やわらかい光を使う。 窓から入る日光や部屋の天井の照明が適しています。直射日光は濃い影と白飛びを生みます。
- 自分の影をページに落とさない。 スマートフォンや手が天井からの光をさえぎります。光が背後からではなく横から当たる位置に立ちましょう。
- 光沢紙ではフラッシュを使わない。 白く光る部分ができ、その下の文字が消えてしまいます。フラッシュが必要なら、スマートフォンを少し傾けて反射を文字からずらし、あとで傾きを補正しましょう。
照明のムラは、ページの一部はきれいに読めるのに一部は意味不明になる主な原因の1つです。暗い部分がインクとして扱われてしまうのです。
正面から撮る
スマートフォンをページと平行に構えましょう。傾いていると、ページの奥側が小さくなり、行が狭まり、片側の文字がもう片側より小さくなります。
どうしても斜めになる場合は、4隅補正(遠近補正)ツールでページを長方形に戻せます。ページの各隅にハンドルをドラッグするだけです。横向きや逆さまの画像は回転させるだけで済みます。綴じ目に向かって湾曲する本のページはもっと厄介です。傾き補正では曲面を平らにできないので、撮影前に本をできるだけ平らに押さえましょう。
コントラストを整える
OCRエンジンは、明るい背景に暗い文字が最も得意です。
- 暗い背景に明るい文字(ダークモードのスクリーンショット、スライド、看板など)は、読み取る前に反転しましょう。
- 色付きの文字や背景は、グレースケールにするとよく読めることが多いです。赤とピンク、青とグレーのような組み合わせは特にそうです。
- 薄くなった印字や淡い文字は、コントラストを上げると改善します。背景にムラがあるなら白黒も効果的です。
- 模様のある背景(小切手や証明書の地紋など)は、白黒にすると取り除けることがあります。薄い模様が消え、濃い文字だけが残ります。
くっきりと撮る
- 文字をタップしてピントを合わせる。 撮影前に行いましょう。ページがレンズに近いときは特に大切です。
- 手を動かさない。 両ひじをテーブルについて構えましょう。暗い場所ではシャッター速度が遅くなるので、明るくすることはぶれの防止にもなります。
- その場で確認する。 スマートフォンで写真を拡大して見てみましょう。原寸で文字がぼやけていたら、ページが目の前にあるうちに撮り直します。
シャープは少しぼやけた画像に、ノイズ除去は暗い場所で撮ったざらついた写真に効果があります。ただし、本当の手ぶれはどちらでも直せません。
必要な部分だけにトリミングする
画像に写っているものはすべて、エンジンが解釈しなければならない対象です。
- 余計なものを取り除く。 机の端、ほかのページ、ロゴ、写真、黒い縁は、文字と間違えられたり、レイアウトの判定を混乱させたりします。
- 別々の領域は別々にトリミングする。 1つの段、1つの段落、1つの表だけが必要なら、そこだけにトリミングしましょう。
- 少し余白を残す。 文字が画像の端に触れるほどきつくトリミングしないでください。Tesseractのドキュメントでも、文字のまわりに少し余白があるとよいとされています。
正しい言語を選ぶ
OCRは、言語ごとに専用のモデルで読み取ります。フランス語の文章を英語として読むと、アクセント付きの文字が間違って、あるいはまったく出てこなくなります。ヒンディー語を英語として読めば、意味不明な結果になります。
ページに出てくる言語はすべて選び、それ以外は選ばないようにしましょう。たとえば2か国語の書類なら英語とヒンディー語です。余分な言語を追加すると読み取りが遅くなり、エンジンが選べる誤った候補も増えてしまいます。
Image to Text Appの「自動」設定では、英語とブラウザの言語から始めます。別の文字体系のように見える文字があれば、その文字体系を検出し、正しい言語で画像を読み直します。
正しい読み取りモードを選ぶ
ほとんどのモードでは、どの文字が認識されるかよりも、結果の形が変わります。プレーンテキストはすべての行を見たとおりに残します。ドキュメントは行を段落にまとめ、見出しやリストを保ちます。表、レシート・請求書、コード、手書き、数式は、それぞれの用途に合わせて結果を整えます。Image to Text Appはモードを自動で選び、「表のようです」のように推測をラベルで示します。画像をアップロードし直さなくても切り替えられます。
自動補正がしていること
Image to Text Appの自動補正は標準でオンになっています。画像に応じて、暗い背景の明るい文字を反転し、小さな文字を拡大し、少しの傾きを補正し、スマートフォンの写真の明るさのムラや影をならし、コントラストを強めます。行った処理はアプリ内に一覧で表示されるので、何が変わったかを確認できます。
結果が思ったより悪い場合は、「比較」を長押しして元の画像を確認し、手動のツールを試してみましょう。回転、トリミング、4隅補正、明るさ、コントラスト、シャープ、グレースケール、色を反転、白黒、明るさのムラ補正、ノイズ除去があります。画像を変更したら、Ctrl+Enter(Macは⌘+Enter)で読み取り直します。
結果を効率よく確認する
結果が良くても、頼りにする情報なら確認する価値があります。
- まず全体の信頼度を見る。 高・中・低は、どれだけ注意して読むべきかの目安であり、保証ではありません。
- 印の付いた単語を順に確認する。 エンジンが自信を持てなかった単語には下線が付き、次々に移動して確認できます。
- テキストと画像の連動を使う。 テキストの行をクリックすると画像上の位置がわかり、画像をクリックするとその文字に移動します。
- 前後の文脈がないものを優先する。 名前、数字、メールアドレス、Webアドレス、コードは周りの単語から推測できないため、間違いがあると最も困る部分です。
- 繰り返し出てくる誤りは検索と置換で直す。 一括置換ではなく、一致した箇所を1つずつ確認しながら置き換えましょう。
手書き文字には、撮影と確認に独自のコツがあります。手書きメモをテキストに変換する方法をご覧ください。印刷されたページの写真なら、写真の文字起こしのページで上記のすべてをまとめて試せます。スマートフォンなら、その場で直接撮影することもできます。