同じスキャンPDFのページ間でOCR結果にばらつきが生じる原因は何ですか?

エヴァ・ウォンテクニカルライター であり ZimaSpaceの常駐ティンカーでもあります。 生涯のオタクであり、 ホームラボとオープンソースソフトウェアに情熱を持っています。彼女は複雑な技術的概念をわかりやすく、 実践的なガイドに翻訳することを専門としています。エヴァはセルフホスティングは楽しくあるべきで、怖がるものではないと信じています。彼女のチュートリアルを通じて、コミュニティが ハードウェアのセットアップを解明する手助けをしています。初めてのNAS構築からDockerコンテナの習得まで。

スキャンしたPDFでページごとにOCRの結果が異なるのは、各ページの解像度、傾き、コントラスト、圧縮、レイアウト、言語、画像の形状が異なる場合があるためです。

家庭のアーカイブには、複数回のスキャン、スマートフォンでの撮影、コピー、画像の取り込みなどから作成された1つのPDFが含まれていることがあります。ビューアーでは連続した文書に見えても、OCRエンジンはページ画像を個別に処理します。あるページは鮮明な300 DPIのスキャンでも、次のページは縮小されていたり、回転していたり、綴じ部分付近で歪んでいたり、背景の模様に覆われていたり、破損したテキストレイヤーをすでに含んでいたりします。そのため、処理中にOCRモデルが変化したというより、ページ入力のばらつきが原因であることが多いのです。

1つのPDF内でもページごとに実効解像度が異なる場合がある

PDFページはコンテナであり、埋め込まれたすべての画像が同じ画素密度であることを保証するものではありません。複数のファイルを結合する際に、ページごとに異なる設定でスキャンされたり、画像が再スケーリングされたりすることがあります。

Tesseractの品質ガイダンスでは、OCRへの重要な入力として解像度と文字の画素サイズについて説明しています。

低解像度のページでは、まず小さな句読点や文字の輪郭が失われます。一方、高解像度のページでは正確さが保たれる場合があります。この違いはページ番号ではなく、ページのラスター寸法と文字の高さに左右されます。

回転、傾き、ページの湾曲が文字の分割を変える

OCRは、文字を個別に認識してから行やテキスト領域を探すわけではありません。わずかな傾きでも、行が結合したり分割されたり、想定される分割境界をまたいだりすることがあります。

OCRmyPDFは、回転、背景除去、傾き補正、クリーニングなどの画像処理を定められた順序で適用します。これは、ページの形状が後続の認識処理に影響するためです。

誤りが綴じ側の端、湾曲したページ、または回転した挿入ページの付近に集中しているなら、原因は幾何学的なものです。まっすぐなページ全体で文字の置換が一様に起きている場合は、言語やモデルの設定がより強く疑われます。

不均一な照明と背景の模様は、単一のしきい値処理では対応できない

フラットベッドスキャナーでのスキャンは、ほぼ均一な白い背景になることがあります。一方、スマートフォンで撮影したページには、影、明暗の勾配、汚れ、裏面の透けなどが含まれる場合があります。

OpenCVでは、照明が不均一な場合に局所領域ごとに異なるしきい値を適用する、グローバルしきい値処理と適応的しきい値処理を区別しています。

1つの固定された前処理設定で、きれいなページは改善できても、暗いページの薄い文字が消えてしまうことがあります。OCRの誤りが特定の単語ではなく、影、紙の色、低コントラストの領域に沿って発生しているなら、この根本原因が考えられます。

歪みと遠近法の変形が文字の形状を変える

ページを斜めから撮影したり、本の背の近くで曲がっていたりすると、一部の文字が引き伸ばされ、別の文字が押し縮められます。まっすぐなテキスト行が曲線になったり、ベースラインが一点に向かって収束したりすることもあります。

PaddleOCRは、向きの分類と画像の歪み補正のための文書前処理を提供しています。

遠近法による変形やページの湾曲では、場所に依存した誤りが生じます。中央部分は正しくOCRできても、外側の余白部分で失敗することがあります。言語モデルの問題であれば、通常は場所に関係なく同じ記号に影響します。

圧縮と物理的な劣化がページごとに異なる情報を失わせる

JPEGブロック、リンギング、ぼけ、網点パターン、コピーの繰り返し、インク濃度の低下は、文字の線を消したり、誤った輪郭を作ったりします。

堅牢な文書解析に関する研究では、スキャン、傾き、歪み、画面撮影、照明などの劣化を評価しています。

これらのアーティファクトは、結合前のページが異なるソースから作成されたために、ページごとに異なる場合があります。ファイル全体に対する圧縮設定では、以前のスキャンやコピーですでに失われた詳細を復元できません。

レイアウトの変化が認識失敗と誤解されることがある

通常の段落、表、2段組みの付録、手書きのメモ、フォームでは、領域の判定や読み取り順について異なる前提が必要です。

TesseractなどのOCRエンジンにページ分割モードが用意されているのは、入力をブロック、まばらなテキスト、段組みなど、どのレイアウトとして扱うかによって認識結果が変わるためです。

文字自体はほぼ正しいのに、段組みが交互に混ざったり、表のセルが誤った順序で出力されたりする場合、主な失敗はレイアウト解析にあります。プレーンテキストの編集距離だけを測定すると、この違いが隠れてしまうことがあります。

複数の言語、フォント、文字セットによって候補の範囲が変わる

レポートの途中で、英語の段落からアクセント付きの名前、数学記号、手書き文字、タイプライター文字、別の言語へ切り替わることがあります。

設定された認識言語に該当する文字パターンがない場合、エンジンは見慣れない字形を、対応している視覚的に似た文字へ置き換えます。装飾的なフォントや劣化した等幅文字では、同じ影響がさらに強くなることがあります。

この原因は、文字体系やタイポグラフィの境界に沿って現れます。画像品質が良好なのに、特定の言語やフォントファミリーを含むページだけが同じように失敗するなら、スキャンノイズよりも認識モデルや言語パックの問題である可能性が高くなります。

PDFのラスター化によって、OCRエンジンに異なる画像が渡されることがある

ページによっては埋め込みラスター画像を含み、別のページには画像とベクターテキストがあり、さらに別のページにはすでに非表示のOCRレイヤーが含まれていることがあります。レンダリング設定によって、新しいOCR処理に渡される画素が決まります。

PyMuPDFのOCRガイダンスでは、OCRはページ画像上で動作し、ページのレンダリングと既存のテキストが、OCRを実行するかどうか、またどのように実行するかに影響すると説明しています。

ZimaSpaceの文書検索とRAGに関する記事では、後続処理における境界を示しています。取り込みパイプラインがページ単位の出典情報と信頼度を保持しない限り、不均一なOCRは不均一なチャンクや引用につながります。

よくある質問

1つのOCR言語設定で、多言語PDFに対応できますか?

エンジンが複数の言語モデルの組み合わせに対応していれば可能ですが、文字体系、フォント、ページ品質が異なる場合、精度は変動することがあります。言語の検出やページ単位の設定が重要になる場合もあります。

300 DPIならOCRの結果は一貫しますか?

いいえ。利用できる詳細情報は増えますが、傾き、ぼけ、背景ノイズ、圧縮、歪み、レイアウトが認識品質を大きく左右することがあります。

PDFは鮮明に見えるのに、なぜOCRの結果が悪いのですか?

ビューアーは画像を滑らかにしたり、見栄えよく拡大・縮小したりすることがあります。OCRは、基になる画素、テキストレイヤーの状態、認識パイプラインで使用されるラスター化の方法に依存します。

テック&AIハブ

もっと読む

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.