スキャンした書類の文字をWordに貼り付けたい、ホワイトボードの写真をテキストに変換したい—— そんな場面で活躍するのがOCR(光学文字認識)です。 この記事ではOCRの仕組み、PDFテキスト抽出との違い、そしてブラウザだけでOCRが動く理由を解説します。
OCRとは — 光学文字認識の仕組み
OCRは画像の中に写っている文字を解析してテキストデータに変換する技術です。 1990年代はスキャナと専用ソフトが必要でしたが、2020年代には機械学習モデルの進化によって スマホアプリやブラウザ上でもリアルタイムに動かせるようになりました。
OCRの処理は大きく3段階に分かれます。
- 前処理 — 画像の傾き補正・コントラスト調整・ノイズ除去を行い、文字を認識しやすい状態に整える
- 文字認識 — 学習済みモデルが文字の形状パターンを照合し、最も可能性の高い文字列を出力する
- 後処理 — 言語モデルが文脈を考慮して誤認識を修正し、単語・文章として整形する
PDFテキスト抽出とOCRの違い
混同されやすいのが「PDFテキスト抽出」と「OCR」の違いです。PDFには2種類あります。
| PDFの種類 | 特徴 | テキストの取り出し方 |
|---|---|---|
| テキスト型PDF | Wordや印刷設定から生成。文字情報がデータとして内部に存在する | PDFテキスト抽出ツールで直接取り出せる(OCR不要) |
| スキャンPDF(画像型) | 紙の文書をスキャナで取り込んだもの。内部はただの画像 | テキスト抽出では取れない。OCRが必要 |
見分け方は簡単です。PDFをAcrobat ReaderやブラウザのPDFビューアで開き、文字をマウスで選択(ドラッグ)できるかを確認してください。 選択できればテキスト型、選択できなければ画像型(スキャンPDF)です。 まずPDFテキスト抽出を試し、 取れない場合にOCRを使うという順番がおすすめです。
ブラウザでOCRが動く理由 — Tesseract.jsとWebAssembly
ぱんだツールズのOCRにはTesseract.jsを使っています。 これはGoogleが開発したオープンソースOCRエンジン「Tesseract」を WebAssembly(C++コードをブラウザ実行可能な形式に変換する技術)でJavaScriptに移植したライブラリです。
日本語の学習済みモデルを内蔵しており、ファイルをサーバーに送信することなく、 お使いのデバイス上だけでOCR処理が完結します。 機密書類や個人情報を含む文書でも安心して使える設計です。 詳しい仕組みはブラウザでファイル処理できる理由の記事も参考にしてください。
画像OCRを使う手順
- ファイルを用意する — スキャン文書・ホワイトボード写真・スクリーンショットなど。 解像度が高いほど認識精度が上がります(目安:300dpi以上)
- ツールを開く — 画像ファイルは日本語OCRツール、 スキャンPDFはPDFテキスト抽出を使用
- ファイルをアップロードして実行 — ドラッグ&ドロップまたはクリックしてファイルを選択し、「テキスト抽出」を押す
- 結果を確認してコピー・保存 — 認識結果を目視確認してから使用する。重要文書は誤字を確認することを推奨
OCRが苦手なケース
OCRが精度よく動くのは「明瞭な印刷文字が正面から撮影されている」状態が前提です。 以下のケースでは精度が落ちやすいため、あらかじめ知っておきましょう。
| 苦手なケース | 対処法 |
|---|---|
| 解像度が低い(スマホ遠撮り) | 近づいて再撮影・高解像度でスキャンし直す |
| 斜めに傾いた文書 | 傾きなく正面から再撮影する |
| 背景が複雑(メモ帳の格子・写真の上の文字) | 白紙の上に置いて撮影する |
| 崩し字・草書・筆記体 | 手書きOCRの場合は認識後に手動修正が前提 |
| 極端に小さいフォント(6pt以下) | 画像を拡大してから処理する |
まとめ
- OCRは画像内の文字を認識してテキストデータに変換する技術。前処理・認識・後処理の3段階で動く
- PDFからのテキスト取り出しは「テキスト型PDF」→テキスト抽出、「スキャンPDF・画像」→OCRの順で試す
- ぱんだツールズのOCRはTesseract.js+WebAssemblyによりブラウザ完結で動作。ファイルはサーバーに送信されない
- 精度を上げたい場合は300dpi以上・傾きなし・白背景の状態で処理するのが基本
- 認識結果は目視確認を推奨。重要文書はそのまま使わず確認してから利用する