CodeKitHub
日本語
本のページ写真のOCRがうまくいかない理由(わずか数度の傾きが精度を壊す)

本のページ写真のOCRがうまくいかない理由(わずか数度の傾きが精度を壊す)

公開日 2026年7月24日

本のページの写真をオンラインでテキストに変換しようとして、意味不明な文字列の壁が返ってきた経験があるなら、おそらく原因を誤解している。古く黄ばんだ紙や照明の悪さのせいだと考えたくなるが、実際にテストしてみると、そのどちらもほとんど結果を動かさなかった。本当の原因はほぼ常に、写真を見ただけではわからないもの——わずかなカメラの傾きだ。

テスト:同じページ、4つの条件

実際の本の写真でOCR(光学文字認識)を本当に壊しているものが何かを調べるため、同じ文章ブロックをオープンソースのOCRエンジンTesseractで、4つの条件——きれいな平らなスキャン、黄ばんで色あせたページ、約12度傾けて撮影した写真、傾きに加えて反射光を加えた写真——にかけてみた。

条件 単語の認識精度
きれいな平らなスキャン 100%
黄ばんで色あせたページ(傾きなし) 100%
約12度傾いた写真(変色なし) 67.7%
約8度傾き+反射光 71.0%

黄ばんだページは、まっさらなページとまったく同じスコア——満点だった。傾きが加わった瞬間、精度は3分の1も落ち込み、「教科書スキャンをWordに」系のツールを試したことがある人なら誰もが見たことのあるような結果になった——「brown」が「brow,」に、「Chapter.」が「Chapte,.」に、「hidden」が「hidde,,」になる、といった具合だ。

なぜわずかな傾きがこれほどの被害をもたらすのか

OCRエンジンは、連続した水平方向のインクの帯を探しながら画像の行をスキャンすることで文字を読み取る——これが1行と次の行を区別する仕組みだ。完全に水平なスキャンでは、各行の文字がきれいな水平の帯の中に収まり、エンジンは1行目、2行目、3行目をきれいに分離できる。

ページをわずか10度傾けるだけで、そのきれいな水平の帯は、何十行ものピクセル行にまたがる斜めの塗りつぶしに変わってしまう。エンジンの行分割ロジックは、本来別々の2行に属するはずの文字同士を混ぜ合わせたり、1つの文字を「別々の2行」だと誤認して分割したりし始める。結果は「多少精度が落ちる」程度では済まない——まったく別種の出力になる。なぜなら、エンジンが読み取りの基本単位としている「行」そのものが、実際に画像に写っているものと対応しなくなってしまうからだ。

これは、あなた自身の目には完全に読める写真でも、OCRの結果が読めないものになり得る理由でもある。人間の視覚システムは10度の傾きを意識的な努力なしに補正してしまい、傾いているとすら気づかない。単純なOCR処理にはそのような補正機能が組み込まれておらず、与えられたピクセルをそのまま読み取るだけだ。

解決策:認識する前に、まっすぐにする

実務上の結論は「もっと注意深くスマートフォンを持て」ではない——開いた本を撮影する際、ある程度の傾きはほとんど避けられない。スキャナーのようにページを平らに押し当てているわけではないからだ。解決策は自動化することにある。文字認識を実行する前に傾きの角度を検出して補正する、後からではなく。

重い機械学習モデルを使わずに角度を検出する信頼できる方法の一つが投影法だ。画像を候補となる角度の範囲で回転させ、それぞれの角度について、行ごとのインク分布がどれだけ「尖っている」かを測定する。正しい角度では、文字行がくっきりした帯として並ぶ(行と行の間の分散が大きい)。それ以外の角度では、インクが行をまたいで塗りつぶされる(分散が小さい)。最も分散が大きくなる角度が、補正すべき傾き角度だ。

この補正を先に行い、その後で文字認識を行うことで、傾けたテスト画像はすべて単語認識精度100%まで回復した——同じページ、同じOCRエンジン、唯一の違いは先にまっすぐにしたことだけだ。

本をデジタル化する際に意味すること

  • 紙の状態を気にする必要はない。 黄ばみ、軽度の色あせ、紙の経年劣化によるコントラスト低下は、それ単体では精度をほとんど動かさない。古い文庫本は新品とほぼ同じくらいうまくデジタル化できる。
  • 角度は気にする必要がある。 肉眼では気づかないほどのわずかな傾きでも、使える文字と使い物にならない文字列との全差になり得る。
  • フラッシュの反射は傾きほどではないが、それでも悪影響を与える。 光沢紙の上の明るいハイライトは、その下の文字を完全に消してしまう可能性がある——そもそも読み取れるインクが存在しない領域は、角度補正では直せない。
  • 傾きを自動的に補正するツールこそが、本当の問題を解決する。 私たちの本のページ写真をテキスト化するツールは、まさにこの検出と補正のステップを、認識の前にブラウザ内で実行する——アップロードなし、サーバーなし。しかも平らなスキャンを前提にするのではなく、傾きの問題を前提に専用設計されている。

以前、本の写真でOCRを試して、結果が読めなかったために諦めたことがあるなら、問題はそのページ自体ではなかった可能性が高い——ほぼ間違いなく、数度のカメラの角度が原因だったのだ。

← ブログに戻る