PDF OCR テキストレイヤー追加

スキャンPDFに検索・コピーできる透明テキストを追加

1ファイル選択2設定3処理4保存

PDFを選ぶと内容を解析して表示します。

ファイルはこのブラウザ内でのみ処理されます。サーバーにはアップロードされません。

スキャンPDFにOCRで検索・コピーできる透明テキストレイヤーを追加

別のツールで続ける
作業の設定
設定
AI高精度認識は初回のみ言語ごとのモデル(約10〜18 MB)をダウンロードし、グラフィックカードがあれば高速化します。標準認識は韓国語と英語のみ対応です。
文書で使われている言語を選ぶと精度が上がります
日本語や韓国語のように画数の多い文字は、200DPIだと認識率が大きく下がります。結果が悪い場合は1段階上げてみてください。

ページを画像として描画して文字を認識し、元のページの上に見えないテキストレイヤーだけを追加します。ページの見た目は変わりません。初回実行時にOCRエンジンと言語モデルを一度だけダウンロードし、画像がブラウザの外に送られることはありません。

暗号化されたPDFは先にパスワードを解除してください。ページの内容を中心に処理するため、しおり・添付・フォーム・署名の保持は保証されません。原本を保管し、結果をご確認ください。

PDF OCR テキストレイヤー追加について

認識エンジンは2つあります。既定の「AI高精度認識」はPaddleOCRのモデル(行検出にPP-OCRv3、文字認識にPP-OCRv5 mobile)をONNX Runtimeでブラウザ上で動かし、「基本認識」はTesseractのLSTMエンジン(tesseract.js)に韓国語・英語のbest_intデータを組み合わせます。どちらもこのサイトから取得してローカルで実行するため、スキャン画像が外部のOCRサーバーへ送られることはありません。

出力は元のPDFを描き直したものではありません。ページの内容はそのままにして、認識した単語をPDFのテキスト描画モード3(塗りも輪郭も描かないモード)で元の文字の位置に重ねます。見た目はスキャンのままですが、ビューアはこの層を検索・選択・コピー・読み上げに使います。

2つのエンジンはページの読み方が違う

Tesseractはまずページ全体のレイアウトを解析してブロック・段落・行に分け、各行をLSTMに通して文字列にします。二値化された画像を前提とした設計なので、このツールはTesseractに渡す前に背景を平坦化し、Sauvolaの適応的二値化と小さな点の除去を行います。描画解像度もuser_defined_dpiとして伝え、文字サイズを推測させないようにしています。

PaddleOCR側は、DB(Differentiable Binarization)検出器が「その画素が文字領域である確率」の地図を作り、そこから行の枠を取り出します。各行は高さ48ピクセルに切り出され、認識器はCTCで文字列をまとめて出力します。文字の区切りを個別に決める必要がありません。ニューラル認識器は柔らかい輪郭のほうが読みやすいため、この経路では白黒にせず、背景をならしたグレースケールを渡します。

AI検出器はページを長辺1600ピクセルに縮小して見ます。解像度を上げても行の位置はほとんど変わらず、効いてくるのは切り出した行の鮮明さ、つまり認識精度です。

300DPIが既定値である理由

Tesseractの公式ドキュメントは「少なくとも300DPIの画像で最もよく動作する」と書いています。本質は文字1つに何ピクセル割けるかです。10ポイントの本文は200DPIで高さ約28ピクセル。画数の多い漢字では線と線の隙間が1〜2ピクセルになり、「績/積」「候/侯」のような取り違えが増えます。

選択肢は200・300・400DPIで、既定は300です。脚注やレシートなど8ポイント以下の文字が多ければ400を使ってください。ただしこれは認識用にページを描画する解像度で、PDF内のスキャン画像が150DPIなら400で描画しても情報は増えません。300から400に上げても結果が変わらなければ、元のスキャンの限界です。描画は長辺7000ピクセルで打ち止めになるため、大判図面は設定より低い解像度で読まれることがあります。

言語の選択はモデルの選択

AI認識は文字体系ごとにモデルを一度だけダウンロードします。日本語を選ぶとCJKモデル(約15.8MB)が使われ、中国語の漢字と英語も読めます。韓国語モデル(約12.8MB)は英数字も対象で、スペイン語を選ぶとフランス語・ドイツ語などと共通のラテン文字モデル(約7.7MB)になります。

基本認識(Tesseract)には韓国語と英語のデータしかなく、日本語の文書には使えません。日本語PDFはAI認識を選んでください。

すでに文字があるページの判定

「テキスト層が十分なページをスキップ」は、文字が少しでもあれば飛ばすわけではありません。スキャナーが書き込んだファイル名やページ番号だけでページ全体が認識から漏れるのを防ぐため、80文字以上かつページ面積の1%以上を覆う場合だけ「十分」とみなします。

十分に見えても、約100DPIで描画してテキスト枠の外に文字らしいインクが多く残っていれば(Wordに貼り付けた画面キャプチャなど)、そのページも認識します。以前のOCRで見えない層が入っているページを再認識すると、古い層を消して置き換えるので、同じ語が二重に検索されることはありません。

うまくいかない文書

手書きはどちらのエンジンも活字中心に学習しているため期待できません。文字に重なった印影、濃い蛍光ペン、地紋入りの証明書も精度が下がります。また、縦書きの日本語は現状AI経路では縦長の枠を罫線とみなして除外するため、実質的に読み取れません。縦書きの書籍や公文書では結果が空に近くなる点に注意してください。

傾いたスキャンは、先にスキャン補正ツールの傾き補正モードでまっすぐにしておくと安定します。行検出は水平な枠が前提なので、3〜4度傾くだけで長い行に上下の行が混ざることがあります。

例

A4を300DPIで読むときの画素数

入力
A4(595×842pt)、300DPI
結果
約2480×3508ピクセル、10ptの文字は高さ約42ピクセル

倍率は300÷72≈4.17。595×4.17≈2480、842×4.17≈3508です。200DPI(約28ピクセル)に比べ、字画の隙間が1.5倍になります。

ページ番号だけ入ったスキャンページ

入力
「- 3 -」の1行以外は画像のページ、スキップ有効
結果
スキップせず認識

8文字未満は「テキスト層なし」、80文字未満は「一部のみ」と分類され、認識対象になります。

プレビューの色で校正箇所を絞る

入力
平均信頼度88%、一部に赤い枠
結果
赤(50%未満)の語だけ原本と照合

緑は80%以上、橙は50〜79%です。平均が高くても金額や固有名詞に赤があれば必ず目で確認してください。

使い方

  1. スキャンPDFを読み込むと、すでにテキスト層のあるページが表示されます。
  2. エンジン、文書の言語、解像度(既定300DPI)、ページ範囲を選びます。
  3. 実行後、プレビューで単語枠の色と平均信頼度を確認します。
  4. テキスト層入りのPDFと.txtを保存し、ビューアで検索を試します。

よくある質問

コピーした文章に余計なスペースが入ります。

見えない層は単語単位で置かれ、コピー時にビューアが間隔から空白を推測します。日本語では語の間に空白が入ることがあります。正確な文字列が必要なら一緒に保存される.txtを使ってください。

日本語の文字が一部検索できません。

認識言語を日本語にすると、テキスト層にはかなと漢字を含むNoto Sans JPのサブセットを埋め込みます。韓国語などほかの言語で認識した場合はNoto Sans KRになり、漢字が層に入らないことがあるので、日本語の文書は日本語を選んでください。それでも検索できない語は.txtで確認してください。

AI認識と基本認識、どちらを使えばいい?

日本語文書はAI認識のみ対応です。英語のきれいな印刷物なら基本認識でも十分です。

ファイルサイズがほとんど増えません。

テキスト層は文字コードと座標だけで、フォントも使った文字だけを含みます。Ctrl+Fで検索できれば正常です。

関連ガイド

出典

基準日:

プライバシーとデータの扱い