本文へスキップ
LeedyBox
支援する

OCR で画像からテキストを抽出する方法

OCR(光学文字認識)は、写真、スクリーンショット、スキャン画像に写った文字を、コピーや編集ができるテキストに変換します。このガイドでは、結果を左右する要因と、よりきれいなテキストを得る方法を説明します。

OCR の仕組み

OCR エンジンは、まず画像を白黒に変換し、文字が背景から浮かび上がるようにします。次にレイアウトを解析して、テキストのブロック、行、単語を見つけます。最後に、認識モデルが各単語の文字を推定します。

LeedyBox のツールは、オープンソースの OCR エンジンである Tesseract を Tesseract.js を通じて使用しています。認識モデルは印刷されたテキストで学習したニューラルネットワークで、言語ごとに別々のデータがあります。エンジンは単語ごとに信頼度も出力し、ツールは画像ごとにその平均値を表示します。

言語の選び方

言語の設定は、どのような文字や単語が出てくるかをエンジンに伝えます。韓国語、日本語、ロシア語のテキストを英語のモデルで読み取ると、ラテン文字に似た文字が並んだ意味のない結果になります。また、同じアルファベットを使う言語どうしでも、正しいモデルのほうがアクセント記号やよく使われる単語をうまく扱えます。

画像に2つの言語が混在している場合、たとえば英語の製品名を含む韓国語の文書では、両方を選びます。2つ目の言語は、テキストに必要な場合にだけ追加しましょう。言語を追加するたびに認識が遅くなり、エンジンが取り違える可能性のある文字も増えます。

画像 言語 テキストのレイアウト
1つの言語で書かれた文書のページや記事 その言語 自動
現地の言語と英単語が混在するメニュー、スライド、ラベル 現地の言語 + 英語 自動
行の順番が入れ替わって出力される、トリミングした段落 その言語 1つのテキストブロック
見出し、シリアル番号、看板など1行だけのもの その言語 1行のテキスト

画質のコツ

  • 解像度: 低解像度の画像に含まれる小さな文字は、誤認識の最も一般的な原因です。拡大するとある程度は改善するため、LeedyBox のツールは小さな画像を2倍のサイズで読み直すことができますが、画像に含まれていない細部は復元できません。非常に大きな文字も、読み取りの信頼性が下がることがあります。
  • コントラスト: 無地の明るい背景に暗い文字が最も適しています。薄い印刷、灰色の文字、色付きの背景、影があると、文字を背景から分離しにくくなります。グレースケールとコントラストのオプションは薄い文字に役立つことがありますが、きれいな画像ではかえって結果が悪くなることもあるため、結果を比較しましょう。
  • まっすぐな文字: 斜めから撮影した本のように、傾いたり、曲がったり、遠近感でゆがんだりした文字は、行の結合や文字の誤認識の原因になります。文字が明らかに傾いている場合は、画像を回転させるか撮り直しましょう。
  • トリミング: 画像を、必要なテキストの部分だけにトリミングしましょう。ロゴ、写真、枠線、隣の段は文字と誤認識されたり、読み取りの順序を乱したりすることがあります。
  • 圧縮: JPG の強い圧縮は、圧縮ノイズで文字をぼやけさせます。スクリーンショットはできるだけ PNG で保存しましょう。JPG・PNG・WebP・AVIF の比較もご覧ください。

スクリーンショットと写真の違い

スクリーンショットは鮮明でまっすぐなので、通常は良い結果が得られます。主な弱点はサイズで、画面上の文字は高さが数ピクセルしかないこともよくあります。スクリーンショットを撮る前にページやアプリを拡大表示し、撮った後に縮小しないようにしましょう。スクリーンショットは Ctrl+V(Mac では ⌘+V)でツールに直接貼り付けられます。

写真では、光のムラ、反射、ぶれ、遠近感によるゆがみ、ページの湾曲が加わります。カメラをページと平行に構え、テキストで画面を埋め、フラッシュの反射のない均一な光で撮影し、画面をタップしてピントを合わせましょう。カメラが記録した向きは読み取りの前に適用されるため、スマートフォンを横にして撮った写真も正しい向きで読み取られます。

PDF ファイルの場合は、ページを画像に変換する代わりに PDF テキスト抽出を使いましょう。既存のテキストレイヤーを読み取り、テキストレイヤーのないページにだけ OCR を実行します。スキャンした PDF については、ガイド「PDF からのテキスト抽出:テキストレイヤーと OCR」で説明しています。

手書き文字と装飾的なフォント

ここで使われているモデルは印刷されたテキストで学習しているため、手書き文字は通常うまく認識されません。1文字ずつ離して丁寧に書いた活字体の大文字は最も認識されやすいものの、続け字や署名から使える結果が得られることはほとんどありません。装飾的なフォント、筆記体のフォント、非常に幅の狭いフォント、模様のある背景上の文字、縦書きの文字でも、同様の問題が起こります。

結果の確認と修正

OCR の出力は下書きとして扱いましょう。よくある誤りには、0 と O、1 と l と I、「rn」と「m」の取り違え、アクセント記号や句読点の欠落や誤り、行末での単語の結合や分割、隣の段の行が混ざることなどがあります。表や段組みのレイアウトは保持されず、結果はプレーンテキストになります。

テキストを画像と見比べましょう。特に数字、名前、日付、金額、住所は1文字の誤りが問題になるため、注意深く確認してください。信頼度が高くても、テキストが正しいとは限りません。テキストは、コピーやダウンロードの前にツール内で編集できます。

プライバシー: 端末内にとどまるもの

LeedyBox のツールは OCR エンジンをブラウザ内で実行します。画像はお使いの端末で読み取られ、LeedyBox にはアップロードされません。ブラウザは、Tesseract.js ライブラリ、その WebAssembly エンジン、選んだ各言語のデータを、leedybox.com から直接ダウンロードします。これらは通常のファイルのダウンロードであり、画像は含まれません。Tesseract.js は言語データをブラウザのストレージ(IndexedDB)に保存し、再ダウンロードしなくて済むようにします。ブラウザでサイトデータを消去すると、このデータも削除されます。

よくある質問

最初の画像の処理が遅いのはなぜですか?

ある言語を初めて使うときに、OCR エンジンと言語データ(数メガバイト)がダウンロードされるためです。2枚目以降の画像ではそれらが再利用され、言語データは次回以降の訪問に備えてブラウザのストレージに保存されます。

OCR で文書のレイアウトを保持できますか?

このツールは、改行付きのプレーンテキストを抽出します。段組み、表、フォント、書式は、お使いのエディターで手作業で作り直す必要があります。

テキストがまったく検出されなかったのはなぜですか?

多くの場合、文字が小さすぎるか薄すぎるか、言語の設定が間違っています。テキストの部分だけにトリミングする、言語を確認する、または「テキストのレイアウト」で別の設定を試してみましょう。