OCR(光学文字認識):仕組みについて
· 12分で読めます
目次
OCR(光学文字認識)は、スキャンした文書、看板の写真、スクリーンショット、手書きメモなどのテキスト画像を、検索、編集、処理が可能な機械可読テキストに変換します。何世紀も前のアーカイブのデジタル化から、経費報告書のレシートデータの抽出まで、OCRはますますデジタル化する世界において不可欠な技術となっています。
文書管理システムの構築、モバイルスキャンアプリの作成、またはPDFからのテキスト抽出を試みている場合でも、OCRの仕組みを理解することで、より良い結果を得て、よくある落とし穴を避けることができます。
OCRとは?
光学文字認識は、タイプされた、印刷された、または手書きのテキストを含む画像を機械エンコードされたテキストに電子的に変換することです。その核心において、OCRは画像内の視覚的パターンを分析して、個々の文字、単語、テキスト構造を識別します。
1970年代と1980年代の初期のOCRシステムは、テンプレートマッチングに依存していました。各文字の形状を既知のパターンのデータベースと比較する方法です。これらのシステムは硬直的で、特定のフォントと高品質の入力を必要としました。現代のOCRは、膨大な範囲のフォント、サイズ、向き、品質レベルにわたって文字を認識できるディープラーニングニューラルネットワークを使用しています。
今日のOCR技術は、数え切れないほどのアプリケーションを支えています:
- 文書のデジタル化: 紙のアーカイブを検索可能なデジタルデータベースに変換
- モバイルスキャン: スマートフォンの写真を編集可能なテキストに変換
- 自動データ入力: 請求書、レシート、フォームから情報を抽出
- ナンバープレート認識: 駐車場や料金システムのための車両識別
- 小切手処理: 銀行小切手の口座番号と金額の読み取り
- 書籍のデジタル化: 印刷された本から検索可能な電子書籍を作成
- リアルタイム翻訳: カメラアプリを通じて看板やメニューを翻訳
- アクセシビリティツール: 視覚障害者のために印刷されたテキストを音声で読み上げ
クイックヒント: 今すぐ画像からテキストを抽出する必要がありますか?セットアップ不要で即座に結果が得られる画像からテキストへ(OCR)ツールをお試しください。
OCRの仕組み
現代のOCRは、生の画像ピクセルを構造化されたテキストに変換する多段階パイプラインです。各段階を理解することで、入力を最適化し、問題をトラブルシューティングすることができます。
ステージ1:画像取得
プロセスは画像のキャプチャまたは読み込みから始まります。これは、スマートフォンのカメラからの写真、フラットベッドスキャナーからのスキャン、またはスクリーンショットである可能性があります。この初期画像の品質は、最終的な精度に大きく影響します。
取得時の主な考慮事項:
- 印刷されたテキストの場合、解像度は少なくとも300 DPIである必要があります
- 色深度は24ビットカラー、8ビットグレースケール、または1ビット白黒が可能です
- ファイル形式は画像品質ほど重要ではありません(JPEG、PNG、TIFFすべて機能します)
- 照明は影やグレアなしで均一である必要があります
ステージ2:前処理
生の画像が文字認識に最適な入力を提供することはほとんどありません。前処理は画像を強化し、OCRエンジンを混乱させる可能性のあるノイズを除去します。
一般的な前処理操作には以下が含まれます:
- 傾き補正: テキストを水平に揃えるために画像を回転
- スペックル除去: スキャンによる小さな点やアーティファクトを除去
- 二値化: 白い背景に純粋な黒いテキストに変換
- 境界除去: ページの端と余白を削除
- レイアウト分析: テキスト領域、列、読み取り順序を識別
- 行検出: テキストを個々の行にセグメント化
- 単語セグメンテーション: 行を単語に分離
- 文字セグメンテーション: 個々の文字を分離(一部のエンジンの場合)
ステージ3:文字認識
ここで実際の「読み取り」が行われます。現代のOCRエンジンは、テキストを行ごとに処理し、文脈を考慮して似たような文字を区別するLSTM(長短期記憶)ニューラルネットワークを使用しています。
たとえば、ネットワークは「l」(小文字のL)と「1」(数字の1)が似ているが異なる文脈で現れることを学習します。「l」は単語に現れ、「1」は数字に現れます。同様に、「O」(文字)対「0」(ゼロ)、「S」対「5」、「B」対「8」は、周囲の文字によって区別されます。
認識エンジンは文字だけでなく、各認識の信頼度スコアも出力します。99%の信頼度で認識された文字は、60%の信頼度の文字よりも信頼性が高くなります。
ステージ4:後処理
生のOCR出力にはしばしばエラーが含まれています。後処理は言語知識を適用して、起こりうる間違いを修正します:
- 辞書検索: 認識された単語が言語に存在するかどうかを確認
- スペルチェック: 「rnedicine」を「medicine」に修正(一般的なrn/mの混同)
- 言語モデル: 文脈を使用してエラーを修正(「the cat」であって「the c@t」ではない)
- 形式検証: 日付、電話番号、メールアドレスが期待されるパターンと一致することを確認
- 信頼度フィルタリング: 低信頼度の認識に手動レビューのフラグを立てる
ステージ5:出力生成
最後に、認識されたテキストが出力用にフォーマットされます。これは次のようなものかもしれません:
- すべてのフォーマットが削除されたプレーンテキスト
- 位置座標を含む構造化データ(JSON、XML)
- 元の画像の上に見えないテキストレイヤーがある検索可能なPDF
- レイアウト、フォント、フォーマットを保持するHTML
- 編集可能なコンテンツを含むWordまたはExcel文書
OCR精度の要因
OCRの精度は入力品質に基づいて劇的に変化します。精度に影響を与える要因を理解することで、より良い入力を準備し、現実的な期待を設定することができます。
| 要因 | 最適 | 問題あり | 影響 |
|---|---|---|---|
| 解像度 | 300+ DPI | <150 DPI | 高 - 文字がピクセル化される |
| コントラスト | 白地に濃いテキスト | 低コントラスト、色あせ | 高 - エッジが不明瞭になる |
| フォーカス | シャープで明確なエッジ | ぼやけ、ピンぼけ | 重大 - エラーの第1の原因 |
| 照明 | 均一、拡散 | 影、グレア、フラッシュ | 中 - 偽のマークを作成 |
| 配置 | まっすぐ、水平 | 5度以上傾斜 | 中 - レイアウトを混乱させる |
| フォントサイズ | 10-14 pt印刷 | <8 ptまたは>72 pt | 低 - エンジンはよく適応する |
| 背景 | きれい、均一 | テクスチャ、パターン | 中 - ノイズを作成 |
| 文書の状態 | 平ら、きれい | しわ、汚れ、破れ | 高 - 文字を歪める |
実用的な精度のヒント
文書をスキャンする場合:
- 標準文書には300 DPI、小さなテキストには400-600 DPIを使用
- スキャン前にしわのあるページを平らにする(本や重い物を使用)
- スキャナーのガラスを清掃して、ほこりや汚れを除去
- 白黒文書にはグレースケールモードを使用(カラーより良い)
- 利用可能な場合は、スキャナーソフトウェアで自動傾き補正を有効にする
スマートフォンの写真の場合:
- 文書に対して平行に電話を持つ(角度をつけない)
- 自然光または明るい室内照明を使用
- フラッシュを避ける - グレアと強い影を作成します
- キャプチャする前にテキストにタップしてフォーカス
- 文書でフレームを埋める(近づく)
- 自動トリミングと強化を行う文書スキャンアプリを使用
スクリーンショットの場合:
- ネイティブ解像度でキャプチャ(OCR前にリサイズしない)
- 圧縮アーティファクトを避ける(JPEGの代わりにPNGを使用)
- テキストが明確にレンダリングされていることを確認(必要に応じてズームイン)
- 可能であればフォントスムージング/アンチエイリアシングを無効にする
プロのヒント: 結果が悪い場合は、OCRの前に画像をグレースケールに変換し、コントラストを上げてみてください。多くのエンジンは、カラー写真よりも高コントラストの白黒画像でより良いパフォーマンスを発揮します。当社の画像コンバーターツールは、迅速な前処理に役立ちます。
前処理技術
前処理はOCRの精度を劇的に向上させることができます。最も効果的な技術とそれらを使用するタイミングを以下に示します。
二値化(閾値処理)
グレースケール画像を純粋な白黒に変換すると、認識が簡素化されます。課題は、適切な閾値を選択することです。
グローバル閾値処理は、画像全体に単一の閾値を使用します。均一に照明された文書にはうまく機能しますが、ページ全体で照明が変化する場合は失敗します。
適応閾値処理は、異なる領域に対して異なる閾値を計算します。不均一な照明や影のある写真には不可欠です。大津の方法は人気のある自動アプローチです。
ノイズ除去
スキャンされた文書には、しばしばスペックル、ほこりの跡、スキャンアーティファクトが含まれています。ノイズ除去は、テキストを損傷することなくこれらを除去します。
一般的な技術:
- メディアンフィルタリング: ソルト&ペッパーノイズを除去
- モルフォロジー演算: オープニングは小さな白い点を除去し、クロージングは小さな黒い点を除去
- 連結成分分析: テキストになるには小さすぎるオブジェクトを除去
傾き補正
最適な認識のためには、テキストが水平である必要があります。傾き補正はテキストの角度を検出し、画像を回転して修正します。
ほとんどのOCRエンジンには自動傾き補正が含まれていますが、ひどく回転した画像(10〜15度以上)には手動修正が必要な場合があります。
境界除去
ページの端、スキャナーの境界、余白は、レイアウト分析を混乱させる可能性があります。これらを検出して除去すると、特に複数列の文書で結果が向上します。
コントラスト強調
色あせた文書はコントラスト強調の恩恵を受けます。ヒストグラム均等化は、コントラストを最大化するために強度値を広げます。アーティファクトを作成する可能性があるため、過度に強調しないように注意してください。
言語サポート
現代のOCRエンジンは100以上の言語をサポートしていますが、精度はスクリプトタイプ、文字の複雑さ、トレーニングデータの可用性に基づいて大きく異なります。
ラテン文字言語
ラテンアルファベットを使用する言語(英語、フランス語、ドイツ語、スペイン語、イタリア語、ポルトガル語など)は、最高の精度を達成します。きれいな印刷テキストでは99%以上になることがよくあります。これらの言語には次のものがあります:
- 限られた文字セ