FreePDF logoFreePDF

OCR の結果が文字化けする・おかしいときの直し方

FreePDFチーム ·

スキャンを OCR にかけて一段落コピーしたら、「Tbe qnick hrown f0x」のような崩れた英文が出てきた。あるいは単語は合っているのに、4 行目の文の後半が 2 行目に紛れ込んでいる。日本語の書類なら、出てきたのは意味のないアルファベットと記号の羅列だった、ということもあるでしょう。OCR は画素から文字を推測する処理で、推測が外れる原因は、隠れた設定よりもページの画像そのものにあることがほとんどです。ただ、日本語の場合だけは話が別なので、そこから始めます。

日本語が化けるのは、言語が対応していないから

当サイトの OCR には言語の設定がなく、読めるのは英語だけです。日本語のページは精度が低いのではなく、そもそも認識されません。結果はでたらめな英字になるか、何も出てこないかのどちらかで、スキャンをきれいにしても変わりません。フランス語やドイツ語のようなラテン文字の言語は部分的に読めますが、アクセント記号付きの文字が落ちたり、似た文字に置き換わったりします。

日本語の書類は、日本語の言語データを入れた OCR ソフトで読む必要があります。当サイトの OCR の中身でもあるオープンソースの ocrmypdf を自分のパソコンで使うなら、Tesseract の日本語データを入れたうえで次のように指定します。

  • 横書きの書類:-l jpn
  • 縦書きの書類:-l jpn_vert
  • 英語が混ざる書類:-l jpn+eng

日本語の OCR では、文字と文字の間に余計なスペースが入ることがあります。検索に使うだけなら困りませんが、文章として再利用するなら置換で詰めてください。

まずテキスト層全体を見る

英語の書類で結果がおかしいときは、原因を切り分けます。PDF ビューアーの検索では、ある一語が見つかったかどうかしかわかりません。OCR が作ったものを全部見るには、OCR 済みのファイルを PDF テキスト変換にかけ、出てきた .txt を読んでください。たいてい次の三つのどれかに当てはまります。

  • 何も入っていないページがある。ページが横倒しだった、薄すぎた、あるいは丸ごと飛ばされた。
  • 単語は正しいのに順番がおかしい。段組み、表、傾いたページといったレイアウトの問題です。
  • 単語が間違った文字だらけ。画像の質、フォント、言語のどれかが原因です。

PDF テキスト変換には「OCRを実行(スキャンページの文字を読み取る)」のチェックボックスもあります。PDF OCR と同じエンジンなので、欲しいのが .txt だけなら、スキャンから一気にテキストにできます。

ページにもともと文字が入っていた

当サイトの OCR は、すでに文字を含むページを飛ばし、既存の文字を上書きしません。普段はそれが望ましい動きです。裏目に出るのは、既存の文字そのものがゴミだった場合です。スキャナーが独自に粗い OCR をかけていたり、字形がどの文字にあたるかを記録していないフォントのせいで、コピーすると記号になる PDF だったりします。ツールは文字があると判断してページに手を付けず、同じ惨状をそのまま返します。

回避するには、先にページを純粋な画像にします。

  1. PDF JPG 変換で、解像度を「高(300 DPI)」にして変換します。
  2. その JPG を JPG PDF 変換で一つの PDF に戻します。変換前に順番を確認してください。「名前で並べ替え」では page_10 が page_2 より前に来るので、上下の矢印で直します。
  3. 新しいファイルに PDF OCR をかけます。

画像にしたコピーはリンクや入力フォームを失うので、元のファイルは残しておきましょう。また、この回避策は英語のページ向けです。日本語のページは画像にしても当サイトの OCR では読めないので、効果はありません。コマンドラインに慣れているなら、ocrmypdf にはまさにこの状況のための --force-ocr と --redo-ocr というオプションがあり、先ほどの -l jpn と組み合わせて使えます。

設定ではなく、スキャンを直す

実際に文字を認識しているエンジンの Tesseract は、きれいでまっすぐな、300 dpi 前後のページで最もよく働きます。化けた結果の多くは、次のどれかにたどり着きます。

  • 解像度が低い、またはぶれている。300 dpi で、細かい文字なら 400 dpi でスキャンし直します。ぼやけた画像をあとから拡大しても、細部は戻りません。
  • ページが傾いている。当サイトでは読み取る前にページをまっすぐにしません。数度の傾きでも行がばらけたり、別の行の断片がつながったりします。まっすぐスキャンし直すか、自動で切り抜いて平らに補正するスキャンアプリを使ってください。
  • ページが横向きや逆さま。自動回転もしません。先に PDF 回転にかけてください。ただし回転は全ページにかかります。
  • コントラストが低い。色あせた複写、鉛筆書き、色付きの紙は、文字と背景を分けにくくします。

何をしても苦手なもの

いちばん大きいのは手書きです。Tesseract は印刷された文字のために作られていて、余白の手書きメモはノイズになります。筆記体風の書体や極太の装飾書体、写真や柄の上に印刷された文字も同じように苦手です。表や段組みのページは、一文字ずつは正しくても列をまたいで横一直線に読んでしまうことが多く、検索はできてもコピーすると意味の通らない文章になります。こういうものについては、OCR で得られるのは検索できる状態までで、正確な文章が欲しければ打ち直すしかありません。

よくある質問

OCR をもう一度かければ良くなりますか?

なりません。二回目は一回目のテキスト層を見つけて、全ページを飛ばします。上で説明したように画像にしてからかけ直すか、できればもっときれいなスキャンから始めてください。

0 と O、1 と l がよく入れ替わるのはなぜですか?

解像度が低いと、これらはほとんど同じ形になり、エンジンはどちらかを選ぶしかありません。日本語を自分の環境で OCR したときに「力」と「カ」、「口」と「ロ」、「一」と「ー」が混ざるのも同じ理屈です。鮮明なスキャンにするとかなり改善します。請求金額や口座番号のように一文字の違いが大ごとになるものは、頼る前に OCR の結果をページの画像と突き合わせてください。

関連する無料ツール