OCR (光学文字認識)

画像やスキャンされた文書から文字を自動的に認識し、編集可能なテキストデータに変換する技術。紙の文書のデジタル化や、画像内のテキスト抽出に使われる。

OCR (Optical Character Recognition、光学文字認識) は、画像に含まれる文字を認識してテキストデータに変換する技術です。紙の書類をスキャンしてデジタル化する、写真に写った看板の文字を読み取る、PDF の画像ページからテキストを抽出する、といった処理はすべて OCR の応用です。スマートフォンのカメラで名刺を読み取るアプリも、内部では OCR が動いています。

OCR の処理フローは、前処理 → 文字領域検出 → 文字認識 → 後処理の 4 段階です。前処理では画像の傾き補正、ノイズ除去、二値化 (白黒変換) を行います。文字領域検出では、画像のどの部分にテキストがあるかを特定します。文字認識では、検出された文字画像をテキストに変換します。後処理では、辞書や言語モデルを使って認識結果の誤りを修正します。ただしこの 4 段階は古くからある構成で、深層学習ベースのエンジンでは領域の検出と文字の認識をひとつのモデルで一体に学習するものもあり、段階の境目は必ずしもはっきりしていません。

日本語の OCR は英語より難易度が高いとされています。漢字の種類が多い (常用漢字だけで 2,136 字)、字形が似た漢字が多い (「未」と「末」、「土」と「士」)、ひらがな・カタカナ・漢字・英数字が混在する、縦書きと横書きが共存するといった要因が、認識精度を下げます。認識精度はエンジンの新しさだけで決まるものではなく、印刷か手書きか、解像度や紙の状態、表や段組みの複雑さによって大きく変わります。きれいに印刷された本文なら実用に足る精度が出る一方、崩した手書きや罫線と重なった文字は現在も苦手な領域です。精度を数値で語る資料を見るときは、どんな種類の文書で測った値なのかを必ず確認してください。

OCR の認識精度は文字数カウントの正確性に直結します。1 文字の認識ミスは文字数に影響しませんが、文字の結合 (2 文字を 1 文字と認識) や分離 (1 文字を 2 文字と認識) は文字数を変えます。特に手書き文字では、文字間の距離が不均一なため、結合・分離の誤りが発生しやすくなります。OCR 結果の文字数を信頼する前に、認識精度の検証が必要です。

代表的な OCR エンジンには、オープンソースの Tesseract、Adobe Acrobat に組み込まれた OCR、Microsoft の Azure AI Vision などがあり、いずれも多言語に対応しています。Tesseract はヒューレット・パッカードで開発されたもので、2005 年にオープンソースとして公開され、2006 年から 2017 年までは Google が開発を担い、現在はコミュニティによって保守されています。どのエンジンが自分の文書に合うかは、対象が印刷か手書きか、レイアウトがどれだけ複雑かで変わるため、手元のサンプルで読み比べて決めるのが確実です。クラウドの OCR サービスを使う場合は、機密文書を外部のサーバーへ送ることになる点を先に確認しておく必要があります。用途に応じて、手元で動かすエンジンとクラウドを使い分ける判断が求められます。

OCR は「紙の文字数」を「デジタルの文字数」に変換する橋渡し技術です。原稿用紙 400 字の手書き原稿をデジタル化する場合、OCR で認識した結果が正確に 400 文字になるとは限りません。認識ミス、空白の扱い、改行の解釈によって文字数が変動します。原稿用紙の空きマスを空白文字として出力するエンジンもあり、段組みや縦書きの文書では列を読む順序が入れ替わることもあります。OCR にかけたテキストは、文字数を数える前に人間が確認・修正する工程を挟んでください。

この記事を共有