複数ファイルを一括OCRする方法:
整理からスプレッドシート出力までの完全ワークフロー
ほとんどの一括OCRガイドは、間違ったゴール地点で終わっています。スキャンしたPDFを検索可能なドキュメントに変換するだけでは不十分です。請求書、領収書、発注書を処理している場合、実際に必要なのはすべてのデータが1つのスプレッドシートにまとまり、1行が1ドキュメントに対応する形です。ここでは、ファイル整理からツール選定、統合出力までの完全なワークフローを、デスクトップバッチ、クラウドAPI、最新のAI抽出の全ティアにわたって解説します。

重要なポイント
- ほとんどの一括OCRガイドは、50ファイルを入力して50の検索可能なPDFを出力した時点で終了し、実際の作業である請求書番号や合計金額を手作業でスプレッドシートに転記する作業を黙ってあなたに残します。
- デスクトップバッチOCRもクラウドAPIも、請求書番号とページ番号を区別できないため、スプレッドシートへのフィールドレベルの抽出には、カスタムスクリプトか何時間もの手作業コピーが常に必要でした。
- AI抽出はページ上の位置ではなく意味でフィールドを読み取るため、列を一度定義すれば、すべてのバッチが1つの統合スプレッドシートとして出力され、1行が1ドキュメントに対応し、統合作業は一切不要です。
バッチOCRが実際にできること(そしてできないこと)

バッチOCRツールは、根本的に異なる2種類の出力を生成します。間違った方を選ぶと、バッチプロジェクトが途中で停滞する原因になります。レベル1 — 検索可能なPDF出力:ツールが各ページを読み取り、スキャンの背後にテキストを不可視で埋め込みます。PDF内のキーワードを検索できるようになりますが、データは個々のファイル内に留まったままです。Adobe Acrobat Pro DCやABBYY FineReaderなどのデスクトップツールはこのレベルで動作します。レベル2 — 構造化データ出力:ツールが各フィールドの意味を識別し(このテキストは請求書番号、これは合計金額)、それらをスプレッドシートの列として出力します — 文書1件につき1行です。クラウドAPIやAI抽出プラットフォームは、設定の複雑さに応じてさまざまなレベルでこの動作を行います。
200件の契約書を検索したい場合は、レベル1で十分です。200件すべての請求書合計を1つの列にまとめて発注書と照合したい場合は、レベル2が必要です。このガイドでは両方の方法を説明します。
ステップ1:開始前にファイルを整理する
バッチOCRで最もよくある失敗は、ツールの問題ではなく、入力するファイルの問題です。ファイル整理のステップをきちんと行うことは、どのツールの機能よりも時間を節約します。何かを実行する前に、以下のことを行ってください:
すべてのPDF、JPG、PNG、TIFFファイルを1つのディレクトリに集めます。サブフォルダがあるとツールがネストされたファイルをスキップする可能性があるため、サブフォルダは作らないでください。追跡しやすいように、2026-06-batch-invoices/のような名前を付けましょう。
VENDOR_INVOICENUMBER_DATE.pdfのようなファイル名にします。ほとんどのツールは出力時にファイル名を保持するため、処理を開始する前から相互参照キーが埋め込まれていることになります。
バッチに画像のみのPDFとOCR済みのファイルが混在している場合、ほとんどのデスクトップツールは後者を再処理し、処理時間が2倍になり、破損のリスクが生じます。簡単な確認方法:PDFを開いてCtrl+Fを押します。テキストを検索できれば、すでにテキストレイヤーがあります。それらのファイルを入力フォルダから移動してください。
すべてのファイルが読み取り可能で、スキャンが最低200 DPIであることを確認します。ツールによって好む形式は異なります。AcrobatはPDFを好み、クラウドAPIは画像をネイティブに処理します。破損したファイルや回転したファイルは、バッチ処理中に静かに失敗する可能性があります。
Redditで実際にあったヒント(r/sysadminより):「バッチ処理が一部失敗した場合は、ファイルを変更時刻で並べ替え、正常に完了したファイルを別のディレクトリに移動してから、残りのファイルに対してバッチを再実行してください。」このパターン(処理、検査、失敗の分離、再試行)は、すべてのツールレベルで有効です。
ステップ2:バッチツールを選ぶ
バッチOCRツールは3つのカテゴリに分かれます。適切な選択は3つの質問にかかっています:必要な出力形式は何か?1バッチあたり何ファイルを処理するか?セットアップにどれだけ手間をかけられるか?
| 階層 | ツール例 | 出力 | 最適な用途 | バッチサイズ | セットアップ |
|---|---|---|---|---|---|
| デスクトップバッチ | Adobe Acrobat Pro、ABBYY FineReader、PDFelement、Kofax Power PDF | 検索可能なPDF | 一度きりのアーカイブのデジタル化、法務文書の検索 | 50〜500ファイル | インストール+ウィザードに従う |
| クラウドAPI | AWS Textract、Google Cloud Vision、Azure AI Vision、OCRmyPDF | JSON/構造化テキスト | 開発者によるパイプライン構築、大量処理の自動化 | 1,000以上(オーケストレーション使用時) | コード+AWS/Azureのセットアップ |
| AI抽出 | ImageToTable.ai、Nanonets、Rossum | Excel/CSV(構造化データ) | スプレッドシートへのフィールド単位の抽出、定期的なバッチ請求書処理 | 1バッチあたり10〜500 | アップロード→列名を設定→処理 |
各階層を詳しく見て、どのツールがワークフローに合うか判断しましょう。
デスクトップバッチOCR(検索可能なPDF出力用)
デスクトップツールは、Adobe Acrobat ProやABBYY FineReaderをすでにお持ちの場合、最も手軽な方法です。Acrobat Pro DCで、ツール → スキャンの強化 → テキストを認識 → 複数のファイルに進みます。OCR言語を選択し、「検索可能な画像」(元の外観を保持)または「フォーマット済みテキストとグラフィックス」(レイアウトを再構築)を選び、「ユーザーに確認」のチェックを外します — 外さないと、Acrobatがファイルごとに確認を求めてきます。これはAdobeフォーラムでよくある不満です。ツールは各ファイルを処理し、検索可能なPDFを元の場所に保存します。
制限:入力ファイルごとに検索可能なPDFが1つ生成されるだけです。スプレッドシートで実際のデータ値を得るには、各PDFから手動でコピーする必要があり、バッチ処理の目的が損なわれます。
Cloud API OCR(開発者向けパイプライン向け)
AWS Textract、Google Cloud Vision、Azure AI Visionは、開発者がパイプラインを構築する高容量自動化に適した選択肢です。AWS TextractはS3経由で非同期バッチジョブを実行します。ファイルをアップロードし、StartDocumentAnalysisを呼び出すと、テキスト、バウンディングボックス、信頼度スコアを含むJSON形式で結果が返ります。トレードオフとして、これらのAPIは生のテキストと位置データを返すだけで、「INV-2026-0042」が請求書番号であることを理解しません。構造化されたフィールドレベルのデータを取得するには後処理ロジックの作成が必要となり、ベンダーごとにレイアウトが異なるため複雑で不安定になります。
AI抽出(構造化されたスプレッドシート出力向け)
このティアは、バッチからスプレッドシートへのワークフローを最初から想定して構築されています。ImageToTable.aiなどのAI抽出ツールは、視覚言語モデルを使用してドキュメントの意味を理解します。フィールドをページ上の位置ではなく、その意味によって識別します。バッチをアップロードし、必要な列(請求書番号、日付、仕入先、合計)を入力すると、AIがすべてのファイルを並行して処理します。出力は単一のスプレッドシートで、ドキュメントごとに1行、要求したフィールドに一致する列が生成されます。後処理もJSON解析も手動での統合も不要です。
これは「バッチOCRで複数ファイルを処理」を検索する多くの人が実際に求めているバッチフローパターンですが、従来のツールが直接サポートしていないため、ほとんどの記事で言及されることはありません。
ファイルは安全に処理され、保存されることはありません。サンプルの請求書をいくつかアップロードして、バッチからスプレッドシートへのワークフローをお試しください。
ステップ3:バッチ設定を構成する
ツールを選択したら、設定ステップによってバッチ処理の結果がきれいなものになるか、乱雑なものになるかが決まります。これらの設定は、3つの層すべてにわたって重要です。
文書に合わせて言語を設定します。ほとんどのデスクトップツールはデフォルトで英語になっています。バッチにフランス語、ドイツ語、または複数言語が含まれる場合は、明示的に設定するか、多言語対応エンジン(ABBYY FineReader、OCRmyPDF、Tesseractはすべて適切な言語パッケージでこれをサポートしています)を使用してください。
デスクトップツールは、検索可能なPDFまたはフォーマット済みテキストPDFを提供します。クラウドAPIはJSON、テキスト、またはPDFを返します。AI抽出ツールはExcel(XLSX)、CSV、JSONを提供します。次のステップに直接つながる形式を選択してください。QuickBooksインポートにはExcel、カスタムデータベース統合にはJSONを選択します。
スキャンの品質がばらつく場合は、傾き補正(回転の修正)、ノイズ除去(ノイズの除去)、コントラスト正規化を有効にしてください。きれいな300 DPIスキャンの場合はこれらをスキップできます。スマートフォンの写真や品質が混在する文書の場合は、前処理によって読み取り可能な出力とゴミの違いが生まれます。OCRmyPDFの--deskew --cleanフラグは確実なデフォルト設定です。
デスクトップツールはほぼ常に入力ごとに1つの出力を生成します。50個のPDFを入力すると、50個のPDFが出力されます。AI抽出プラットフォームでは、ファイルごとまたは単一のマージされたスプレッドシートを選択できます。ここでの選択によって、ステップ5が簡単になるか、面倒になるかが決まります。
ステップ4:バッチを実行して進捗を監視する
ファイルを整理し、設定を構成したら、バッチを実行します。実行中に注意すべき点は次のとおりです。
デスクトップツール: ファイルごとの進捗インジケーター — 緑=成功、黄/赤=失敗。ファイルが失敗した場合は、エラーメッセージを記録してください。一般的な原因:破損したPDF、パスワード保護されたファイル、解像度が低すぎるスキャン。Acrobatのアクションウィザードは無人で実行できます — 設定で「ユーザーにプロンプト」チェックボックスをオフのままにしておくだけです。
クラウドAPI: 非同期ジョブはジョブIDを返します。ステータスエンドポイントをポーリングして進捗を追跡します。AWS TextractのGetDocumentAnalysisは、IN_PROGRESS、SUCCEEDED、またはFAILEDのJobStatusを返します。部分的な失敗はジョブ全体ではなく個々のページに影響します — レスポンスを解析して、どのページが失敗したかを特定してください。
AI抽出ツール: ほとんどのツールは、キュー待ち、処理中、完了、失敗のファイルを表示するリアルタイムのバッチステータスダッシュボードを提供します。ImageToTable.aiのバッチポーリングは、ジョブの所要時間に応じて3〜30秒ごとに自動的にチェックします。タブを離れて、バッチ完了後に戻ることができます — ダッシュボードには各ファイルのステータスと、プレビューまたはエクスポートの準備ができた抽出データが表示されます。
どのティアを使用している場合でも、バッチ後の検査手順は同じです:最初に失敗したファイルを確認します。ファイルが失敗した場合は、問題を修正し(ぼやけたページを再スキャン、パスワードロックされたPDFの保護を解除、サポートされていない形式を変換)、失敗したファイルだけを再実行します。あのRedditのシステム管理者が指摘したように、更新日時で並べ替え、成功したものを移動し、残りを再実行する — これが最も効率的な復旧パターンです。成果物が名前付き列ではなく全ファイルのテキストである場合、各ファイルを独自のステータスでキューに入れるバッチOCRは、その復旧手順を手作業でのフォルダー再整理ではなくダッシュボードの確認に変えます。
ステップ5:結果を1つのスプレッドシートにマージする

このステップは他のどの記事も飛ばしている部分であり、最も重要な部分です。50枚の請求書を処理したとしましょう。すると、50個の個別出力ファイルができます。各請求書が1行になる単一のスプレッドシートをどうやって作るのでしょうか。
デスクトップツール(検索可能なPDF出力)を使用した場合: 2つ目のツールが必要です。Adobeの「複数ファイルの書き出し」で全PDFをExcelに変換する(その後手動で結合)、pdfplumberを使ったPythonスクリプト、または各PDFからの手動コピー&ペーストです。どれも理想的とは言えません。
クラウドAPI(JSON出力)を使用した場合: 各JSONレスポンスを解析し、フィールドをCSVに書き込みます。自動化は可能ですが、クラウドAPIのフィールド名は汎用的なため(Textractの"BlockType": "WORD"など)、意味のあるフィールド抽出にはマッピングロジックが必要です。
AI抽出ツール(構造化出力)を使用した場合: ここでバッチファースト処理の設計が活きてきます。ImageToTable.aiのバッチ文書からExcelへのワークフローのようなツールは、すべてのファイルを同じ列テンプレートで処理し、単一のマージ済みスプレッドシート(ファイルごとに1行)を出力します。統合の手順は不要です。
ここが重要なポイントです。最初のバッチがスプレッドシートになれば、抽出ルールは再利用可能です。以降のバッチはアップロード時間だけです。以前は1ドキュメントあたり手動で3分かかっていた作業が、今では1ページあたり5〜10秒になり、18倍の効率向上です。
バッチOCRのよくある問題と対処法
注意深く設定しても、バッチ処理では問題が発生することがあります。ここでは、最もよくある問題とその対処法をご紹介します。
症状:処理時間が予想より大幅に長い、ファイルサイズが2倍になる。対処法:入力フォルダにOCR済みのPDFが含まれていないか、追加前に確認してください。Adobe Acrobatでは、文書のプロパティ → フォントで確認できます。フォントがリスト表示されていれば、そのファイルにはテキストレイヤーがあります。そのファイルは「処理済み」フォルダに移動してください。
特にAction Wizardを使用する際に、Acrobatでよくある問題です。対処法:OCRアクションを設定する際に「設定を指定」をクリックし、言語と出力スタイルを設定して、「ユーザーに確認」のチェックを外してください。アクションを保存すると、以降の実行では中断されることなく、同じ設定がすべてのファイルに適用されます。
従来のOCRエンジン(Tesseract、Acrobatの内蔵OCR)は、手書き文字、複雑な表、複数列レイアウトの処理が苦手です。バッチに手書きのエントリが含まれる場合は、視覚言語モデルを採用したAI抽出ツールの使用を検討してください。これらのツールは、文字の形状を照合するのではなく、文書の視覚的な文脈を理解することで、手書きの値、チェックボックス、複合レイアウトを解釈できます。従来の手法と最新の手法の違いについて詳しくは、OCRの実態とAI抽出との違いに関する解説をご覧ください。
デスクトップツールは、特定の問題のある文書で処理が停止し、バッチ全体が停止することがあります。回避策:200ファイルを一度に処理するのではなく、20〜30ファイルのサブバッチに分けて処理してください。クラウドAPIの場合は、オーケストレーションスクリプトでエラーハンドリングを使用してください。各文書の呼び出しをtry-catchブロックでラップし、1つの失敗でジョブ全体が停止しないようにします。AI抽出プラットフォームの多くは、ファイルごとに障害を分離することで、これを内部的に処理します。
異なるソースからの文書では、日付が「06/30/2026」「30 June 2026」「2026-06-30」のように記録されている場合があります。一部のツール(AI抽出プラットフォームを含む)は、抽出中に日付や数値の形式を正規化できます。お使いのツールにこの機能がない場合は、エクスポート後にExcelの書式設定機能や簡単なデータクレンジングスクリプトを使用できます。これは通常、一度だけのマッピング作業であり、一度定義すれば、以降のすべてのバッチに適用されます。
よくある質問
1回のバッチで処理できるファイル数はいくつですか?
デスクトップツールは50〜500ファイルを快適に処理できます。クラウドAPIは適切なオーケストレーションにより数千ファイルまで拡張可能です。AI抽出プラットフォームは通常、UI上で1バッチあたり10〜500ファイルをサポートしています。
バッチOCRとバッチデータ抽出は同じものですか?
いいえ、異なります。バッチOCRは画像を検索可能なテキストに変換します。バッチデータ抽出は特定のフィールド(請求書番号、合計金額、取引先)を識別し、構造化されたスプレッドシートの行として出力します。「『請求書』を含むすべてのドキュメントを検索したい」場合はOCRで十分です。「すべての請求書の合計金額を列Bに入れたい」場合は抽出が必要です。
500枚のスキャンPDFをバッチOCRする最速の方法は?
検索可能なテキストが必要な場合、OCRmyPDFとGNU Parallelを使用すると500枚のPDFを30〜60分で処理できます — parallel --tag -j 4 ocrmypdf --deskew '{}' 'output/{}' ::: *.pdf。構造化データが必要な場合、AI抽出ツールはサーバー側で処理し、50枚の請求書を5〜15分で単一のExcelファイルとして出力します。その他のオプションについては、最高のOCRソフトウェア比較をご覧ください。
バッチOCRは同じバッチ内でPDFと画像を処理できますか?
ほとんどのデスクトップツールはPDFのみを処理します。クラウドAPIは両方を処理できますが、フォーマットごとに別のメソッドが必要です。ImageToTable.aiのようなAI抽出ツールは、PDF、JPG、PNG、WebP、AVIFを同じバッチでネイティブに受け入れます — 変換は不要です。
すべてのバッチで列名を指定する必要がありますか?
AI抽出ツールの場合のみ必要です — しかもドキュメントタイプごとに一度だけの設定です。請求書の列(請求書番号、日付、取引先、合計金額)を一度定義すれば、以降のすべてのバッチで同じテンプレートが再利用されます。デスクトップOCRには列がなく、クラウドAPIはプログラムでマッピングするJSONを返します。
バッチワークフロー:準備からスプレッドシートまで
必要な出力を事前に決めておくと、ワークフローが明確になります。
- 検索可能なPDFのみ → デスクトップツール(Acrobat、ABBYY)またはOCRmyPDF
- カスタム処理用の生テキスト → クラウドAPI(AWS、Google、Azure)→ JSON → 独自の解析ロジック
- 全フィールドを含む構造化スプレッドシート → AI抽出 → 1つの結合Excelファイル → 会計システムに直接取り込み
時間節約の最大のポイントはOCR速度ではなく、多くのガイドが触れない手動の後処理を排除することです。結合された構造化データを出力するワークフローを選べば、「OCR完了」通知後に静かに何時間も費やすファイル単位の統合作業をスキップできます。バッチ処理は、デジタル化だけでなく、ワークフロー全体で時間を節約するべきです。