OCR 精度を最大化する撮影・前処理テクニック — 失敗パターン別の改善法

明るいデスクで書類とスマートフォン Photo: Unsplash

「OCR で文字起こししたら、半分くらいしか正しく読まれなかった」「漢字が別の字に化けて使い物にならなかった」——OCR を試した人なら一度は経験する挫折です。実は OCR の精度は OCR エンジンの賢さよりも、入力画像の質で 7 割が決まります。同じ書類でも、撮り方を 2〜3 分かけて調整するだけで認識精度が 70% → 95% に跳ね上がります。本記事では「失敗パターン → 原因 → 改善法」の順で、ベンリーの 写真の文字数カウントを題材に、明日から効く OCR チューニング術を解説します。

精度を上げる 3 軸

OCR 精度は「① 撮影品質」「② 前処理」「③ エンジン選択」の 3 軸でほぼ決まります。①が悪いと②③をどれだけ頑張っても限界があり、①が良ければ②③はほぼ自動でうまくいきます。最も投資対効果が高いのは撮影段階での 30 秒の手間です。

OCR が失敗する 5 つの典型パターン

OCR の認識結果がぐちゃぐちゃになるとき、原因はだいたい以下の 5 パターンに分類できます。まずは自分の画像がどれに該当するかを切り分けるのが最初の一歩です。

パターン典型症状改善方向
解像度不足「明日」が「明白」になる、画数の多い字が崩れる撮り直し(寄って撮る or 高解像度モード)
歪み・傾き行が斜めにずれる、列が乱れる正面・水平で撮り直し / 自動補正アプリ
低コントラスト薄い文字が空白扱いになる明るい場所で撮り直し / 二値化を強める
ノイズ・背景干渉不要な文字が混入、装飾が文字化けトリミング / 背景を切り抜き
フォント固有装飾フォント・手書き・崩し字が読まれないAI モードへ切替(Gemini)

切り分けができたら、それぞれの対策に進みます。「解像度不足」と「歪み」は 撮り直しで一発解決することが多いので、まず疑うべき項目です。

撮影でやるべき 7 つのこと

OCR 精度の 7 割は撮影段階で決まります。スマホで紙の書類を撮るときの 7 つの鉄則です。

1. 明るい場所で撮る

窓際の自然光、または蛍光灯の真下が理想。暗い場所だとカメラが ISO を上げてノイズが乗り、薄い文字が認識できなくなります。影が紙の上に落ちないように、自分の体・スマホの位置を調整するのもポイント。

2. 正面・水平に構える

斜めから撮ると遠近で文字が歪み、行間隔も列方向もずれます。スマホを紙と平行に構え、画面のグリッド表示(カメラアプリの設定にある)を使って水平を取りましょう。10 度傾くと精度が 15% 落ちると言われます。

3. ピントを文字に合わせる

iPhone / Android のカメラは、画面上の文字部分をタップすると AF(オートフォーカス)と AE(自動露出)を文字に合わせてくれます。手書きメモなどでは AF が背景に合ってしまうことが多いので、必ず文字部分をタップ。

4. 文字を画面いっぱいに収める

A4 紙の全体を 1 枚に収めるより、必要なテキスト部分だけを画面いっぱいに撮る方が解像度が稼げます。撮影後にトリミングするより、最初から寄って撮る方がきれい。

5. 手ブレを避ける

OCR は数十 px のブレでも字形が崩れます。両手で構える、肘を体に固定する、息を止めて押すの 3 つでブレは半減します。スマホスタンドがあればなお良し。

6. 影を作らない

真上から撮ると自分の体や手の影が紙に落ちます。少し斜め前から撮って、編集アプリで歪み補正をかけるのが現実的な解決策。または、光源の方向に対して垂直に撮る。

7. HDR・ナイトモードはオフ

HDR は明暗差を圧縮するため、紙の白と文字の黒のコントラストが下がります。OCR には逆効果。「ドキュメントモード」「書類スキャン」などの専用モードがあれば、それを使うのが最良。iOS のメモアプリは書類スキャン機能が優秀です。

前処理で精度を底上げする

撮影で対応しきれない部分は、画像前処理でカバーします。多くの OCR ツールは内部で前処理を行っていますが、ユーザ側で先に手を入れておくと結果がさらに安定します。

  • トリミング: 文字部分だけにする。周囲の余分な要素を切り落とすだけで、認識領域の精度が上がる。
  • 明るさ・コントラスト調整: スマホの編集アプリで「明るさ +20、コントラスト +30」を試す。文字がくっきり浮かび上がる。
  • 歪み補正: iOS メモ・Google ドライブの「ドキュメント」スキャナーで自動補正。台形補正で正面化される。
  • 解像度を保つ: スマホで撮ったあと、メッセージアプリで送信して再ダウンロードした画像は再圧縮されている。オリジナル画像を直接ツールに渡す。
  • ファイル形式: PNG(可逆圧縮)が理想。JPEG なら品質 90 以上。HEIC は JPEG / PNG に変換してから(多くの OCR ツールが HEIC 未対応)。

ベンリーの 写真の文字数カウントは、OCR モード(Tesseract / PaddleOCR)の場合、内部で「短辺 1500px へのアップスケール → Otsu 法二値化 → 自動反転」を自動実行します。AI モード(Gemini)は前処理せずに画像をそのまま AI に送って文脈推論させるため、前処理は不要です。

エンジン選択の指針(Gemini / Tesseract / PaddleOCR)

同じ画像でもエンジンによって認識結果が違います。それぞれの得意・不得意を理解して使い分けると、難しい画像も突破できます。

Gemini(AI モード)

マルチモーダル AI。文脈推論で崩した文字や低解像度を補えるのが最大の強み。手書きメモ、装飾フォント、写真内の文字、表組みのレイアウト保持、すべてに対応。デメリットは画像が Google サーバーに送られること、利用回数に上限があること(ベンリーでは 1 日 5 回、シェアで +10 回)。

Tesseract(OCR モード・通常)

1985 年から続く老舗 OCR エンジン。軽量で安定、印刷物に強い。ブラウザで動く Tesseract.js は WebAssembly 実装で、初回 12MB の言語データ読み込みのあとは完全にローカル処理。スキャナで取り込んだ書類、PC のスクショ、明るく撮ったメモなど、入力品質が良ければ十分な精度。手書きや装飾は苦手。

PaddleOCR(OCR モード・高精度)

Baidu が開発した深層学習ベース OCR。日本語と中国語に強い。PP-OCRv4 検出 + PP-OCRv3 日本語認識のパイプラインで、複雑なレイアウトや細かい文字も拾える。ベンリーでは「高精度モード」として、ユーザが明示的に有効化したときだけ約 14MB のモデルをダウンロードして使用。Tesseract より一段精度が高いが、初回ロードに時間がかかる。

使い分け表

入力第一選択失敗時の予備
手書きメモGemini諦めて転記
会議のホワイトボードGeminiPaddleOCR
スキャナで取り込んだ印刷物PaddleOCRTesseract
PC スクショ(鮮明)TesseractGemini
装飾フォントのバナーGeminiTesseract
機密書類(外部送信 NG)PaddleOCRTesseract
縦書きの書籍Tesseract(jpn_vert)Gemini

手書き文字を読ませるコツ

手書きは OCR にとって最も難しいタスクですが、書き方と撮り方を工夫すれば実用的な精度が出せます。

  • ブロック体・楷書で書く: 続け字・崩し字は AI でも厳しい。書く側の協力が必須。
  • 文字サイズを大きめに: 行の高さ 1cm 以上を目安。小さい字は AF が合いにくく、ピクセルも稼げない。
  • 濃い筆記具を使う: 0.7mm 以上のボールペン、または太めのサインペン。シャープペンの薄い線は OCR に不利。
  • 方眼紙・罫線紙: 行間が安定するため、AI が行を認識しやすい。
  • Gemini モード一択: Tesseract / PaddleOCR は手書きをほぼ読めない。AI モードに切り替えて。

それでも 100% は無理なので、OCR 結果を「下書き」と捉えて人間が校正する運用が現実的です。完全手入力に比べれば 5〜10 倍速いはずです。

薄い文字・装飾フォントへの対処

「グレーで小さな注釈」「ブランドロゴの飾り文字」「水彩風タイトル」など、コントラストや字形が標準的でない文字は OCR の難敵です。

  • 明るさ・コントラスト調整を強めに: スマホ編集で「コントラスト +50」程度。薄い文字を黒に近づける。
  • 白黒変換: カラー情報がノイズになる場合、画像をグレースケール化してから OCR にかける。
  • AI モード(Gemini)を試す: 装飾フォントを「読む」のは AI の得意分野。コカ・コーラのロゴでも「Coca-Cola」と読める。
  • 該当部分だけトリミング: 周囲のしっかりした文字に紛れていると、ツールがそこを「本文」と判定して薄い文字を捨てる。薄い部分だけ別途切り出し。

複雑なレイアウト(表・縦書き)の扱い

1 段組みの本文だけなら OCR は得意ですが、表組み・縦書き・段組み・コラムレイアウトになると一気に難易度が上がります。

表組み

Tesseract / PaddleOCR は表を「文字の羅列」として読みがちで、列の対応関係が崩れます。Gemini モードなら表の構造を保ったまま Markdown 形式で出力できることが多く、表組みは AI モード一択です。

縦書き

普通の OCR は横書き前提なので、縦書きを入れると行と列が混乱します。ベンリーの「OCR モード → 詳細設定 → 縦書きとして認識する」を ON にすると、Tesseract の jpn_vert データで縦書きを正しく読みます。Gemini も縦書き対応ですが、長文だと行順がたまに崩れることがあるため、長い縦書きは Tesseract(縦書き ON)が安定します。

段組み

新聞や雑誌の多段組みは、エンジンによっては段を無視して上から左 → 右に読む順序になります。段ごとに撮り分けて 1 段ずつ OCR にかけるのが確実。または Gemini モードを使えば、レイアウトを認識して段ごとに整理してくれることが多いです。

認識後の校正テクニック

どんなに頑張っても OCR は 100% にはなりません。認識結果の校正で「最後の 5%」を埋める手順です。

  • 固有名詞・数字を最優先でチェック: 人名・社名・金額・日付の誤認識は致命的。本文の流れより先に確認。
  • 原画像と並べて見る: 「ベンリーの認識結果」を貼り付けた Word の隣に元画像を表示して、視線移動を最小化。
  • 共起語ベースで誤字を探す: 「明日」が「明白」になっていても文章として通ってしまうことがある。前後の文脈と合っているか確認。
  • 正規表現でクセを洗う: OCR がよく間違えるパターン(「0」と「O」、「1」と「l」、「カ」と「力」)を一括検索置換。詳細は 正規表現チートシート
  • 2 つのエンジンで突き合わせ: AI モードと OCR モードの両方で実行して、結果が違う部分だけ人間が判定する。重要な書類なら有効。
関連ガイド

OCR を使ったシーン別の手順は 画像から文字起こしを無料でやる方法、抽出後の文字数カウントの考え方は 文字数カウント完全攻略を参照してください。

よくある質問

Tesseract で英語は読めるのに日本語だけ精度が低い

これは Tesseract の特性で、英数字の認識は 1985 年から鍛えられているので極めて高精度ですが、日本語は漢字・ひらがな・カタカナの 3 種類が混在し、字形バリエーションも大きいので難しい。改善策は「① PaddleOCR 高精度モードに切り替える(日本語専用モデル)」「② AI モード(Gemini)に切り替える」のいずれか。Tesseract 単体で日本語精度を大幅に上げる魔法はありません。

PDF の OCR がうまくいかない

PDF には「テキストレイヤーがある PDF」と「画像 PDF」の 2 種類があります。テキストレイヤーがある PDF は普通にコピペで OK、画像 PDF は 各ページを画像(PNG / JPEG)として書き出してから OCR にかけてください。Mac の「プレビュー」アプリで開いて、ファイル → 書き出す → フォーマット PNG が最も手軽。詳しい手順は 画像から文字起こしを無料でやる方法を。

同じ画像なのに毎回結果が違う

AI モード(Gemini)は確率的な生成モデルなので、温度(temperature)が 0 でも完全には一致しないことがあります。ベンリーは temperature を 0.0 に固定していますが、それでも 100% 同じ結果は保証されません。再現性が必要な業務なら OCR モード(Tesseract / PaddleOCR)を使ってください。これらは決定論的で、同じ入力には常に同じ出力を返します。

大量の画像を一括処理したい

ベンリーは現状 1 枚ずつのアップロード UI です。100 枚以上のバッチ処理が必要な場合は、ローカルに Tesseract や PaddleOCR をインストールしてシェルスクリプトで回す方が効率的です。少数(5〜30 枚)なら、ブラウザのタブを複数開いてそれぞれにドロップする方が早いことが多いです。

OCR エンジンの精度を独自にベンチマークしたい

標準データセットとしては UEC-FoodPic OCR Subset(食事写真の文字)、JNAS(日本語ニュース音声を文字起こし)のテキスト部分などがあります。自社業務で使う場合は、自社の典型的な書類 20〜30 枚を「正解テキスト」とセットで用意して、各エンジンの結果と編集距離(Levenshtein distance)を測るのが現実的。Python の python-Levenshteinjiwer(Word Error Rate 計算)で簡単に評価できます。

OCR を実際に試してみる

本記事の知見をすぐに試せるツールが 写真の文字数カウントです。撮り方を変えるだけで結果がどれくらい変わるか、同じ画像で AI モードと OCR モードを比較するとどう違うか、実物で体感してみてください。

写真の文字数カウントを開く →