OCR API — 開発者向けドキュメントのテキストと構造化データ抽出
ほとんどのOCR APIは生のテキストと座標だけを返すため、ドキュメントの種類ごとにパース用コードを自作する必要があります。本サービスの統合的なアプローチは、テキスト抽出とフィールドの理解を1回の処理で同時に実行し、あなたが定義した列名に沿った構造化データを出力します。
Enterprise-grade security · TLS 1.3 encrypted
あらゆるドキュメントから抽出できる項目
必要な列名を入力するだけで、AIは位置情報ではなく意味を理解して全ページから対応する値を探し出します。構造化されたJSONの結果を取得した後、スプレッドシートが必要な場合はバッチでフォーマット済みの.xlsxワークブックとして出力できます。
OCR APIが途中までしか対応できない理由
OCR APIはテキストと座標を返します。「INV-2024-0892」という文字列が他の検出された単語の中に散らばった状態ではなく、請求書番号: INV-2024-0892 の形で取得するには、別の第2の処理レイヤーが必要です。
OCR APIはフラットな文字列か、座標付きの単語リストを返します。数値 $322.38 とラベル "TOTAL" は、出力内の他のテキストと区別がつきません。コードで、どの数値が合計で、どの数値が小計で、どの数値が明細項目なのかを自力で判断する必要があります。
座標はページに相対的です。位置 (x=100, y=200) で請求書番号を抽出するルールは、別のベンダーのレイアウトが (x=300, y=150) に配置した瞬間に機能しなくなります。ベンダーごとの解析ロジックを維持するのはスケールしません。
Redditの開発者は、OCR出力と利用可能なデータのギャップを「非常にイライラする」と一貫して述べています。APIは仕事をしましたが、データはまだ使用できる状態ではありません。
必要なフィールド(Invoice Number、Total、Vendorなど)を定義するだけで、AIがJSONやスプレッドシートの名前付き列として返します。生テキストのラベル付けや並べ替えは不要です。
AIがInvoice Numberの意味を理解しているため、ページ上の位置に関係なく見つけ出します。ベンダーがテンプレートを変更しても、ルールを更新することなく抽出は機能し続けます。
OCR、パース、フィールド抽出を別々に行う必要はありません。PDFや画像をアップロードし、列を定義するだけで、1つのレスポンスで構造化データを受け取れます。エンドツーエンドの構造化データが必要なチームにとって、この統合アプローチはOCR→パース→抽出のチェーンを維持するよりもシンプルです。
アップロードから構造化データまでを1つのフローで完了
請求書のバッチをAPIで処理する際に行われる一連の流れをご紹介します。中間的なパース作業は一切不要です。
APIまたはウェブインターフェースからファイルをアップロード
PDF、JPG、PNGを送信可能です。単一の書類でも、異なるフォーマットのファイルを同じバッチにまとめて送信することもできます。APIはマルチパートアップロードに対応しており、ステータスポーリング用のタスクIDを即座に返します。各ファイルはキューに登録され非同期で処理され、ウェブUIとAPIエンドポイントの両方で同じエンジンが動作します。
使用する列のスキーマを定義
必要な項目を指定してください — 請求書番号、日付、仕入先、明細(説明/数量/単価/合計)、税額、総合計 など。AIは各書類をセマンティックに読み取り、項目がページ上のどこにあっても自動的に値を指定した列名にマッピングします。
構造化データを取得 — JSONまたはExcel形式
各書類には指定した列の値が自動的に入力された状態で返されます。個別の結果はfield:value形式のJSONで取得でき、バッチ全体の結果はスプレッドシート向けにフォーマットされた.xlsxワークブックとしてダウンロード可能です。正規表現を作成したり、バウンディングボックスの座標マッチングをデバッグしたり、後処理パイプラインを保守する必要は一切ありません。
APIドキュメントから始めましょう
APIキーの作成、ドキュメントのアップロード、非同期ジョブのステータスポーリング、Webhookの登録、完了したバッチのエクスポートを行う準備ができたら、開発者向けドキュメントをご利用ください。
このアプローチが適しているケース
最適なケース
- ✓ 文書から生のテキストではなく、構造化されたフィールド:値のペアが必要な場合。
- ✓ 異なるレイアウトの文書が複数のソースから届く場合 — セマンティック抽出はルール変更なしで適応します。
- ✓ 後処理パイプラインを省略したい場合 — 抽出結果をそのままデータベース、APIレスポンス、スプレッドシートに読み込めます。
- ✓ チームに抽出ルールを構築・維持する専任のNLPや文書解析エンジニアがいない場合。
注意が必要なケース
- ⚠ 自由形式のテキスト再構成のために、文字単位の正確なバウンディングボックス座標付きの生OCRテキストが必要な場合 — このアプローチは名前付きフィールドを出力し、完全なレイアウトジオメトリは提供しません。
- ⚠ パイプラインが月間数百万件の文書を1ページあたり1セント未満で処理する場合 — スループット要件に対して従量課金制を評価してください。
- ⚠ 極端に筆記体の手書き文字や、物理的な劣化が激しいスキャン文書では抽出精度が低下する可能性があります — 鮮明な印刷文書やスキャン文書で最も高い信頼性が得られます。
よくあるご質問
APIを使ってスキャンしたPDFから請求書番号と合計金額を抽出できますか?
はい。スキャンされたPDFは画像として扱われ、ビジュアルAIがページを直接読み取るため、テキストレイヤーに依存しません。請求書番号と合計金額を列名として定義すれば、そのPDFがデジタルで作成されたものでもスキャンされたものでも、APIは応答内の名前付きフィールドとして値を返します。
Google Cloud VisionやAWS Textractを使うのと、どこが違いますか?
Google Cloud VisionとAWS Textractは、フィールドに事前にラベルが付いているドキュメントに対して、バウンディングボックス付きの生のテキストやキーと値のペアを返します。本APIはセマンティックな理解によって、あなたが定義したフィールドを返します。たとえば仕入先名を要求すれば、ドキュメントに明示的なラベルがなくても仕入先名を見つけます。出力スキーマはドキュメントではなく、あなた自身が定義できます。
ドキュメントごとに明細行の数が異なる場合、どう対処すればよいですか?
明細のような列に、説明・数量・単価・合計のネストされたサブフィールドを定義してください。AIは1件あたり3行でも30行でも、ドキュメント内のすべての明細行を検出し、JSON内の配列として、または出力時に展開された行として返します。
OCR APIを統合する前に評価する方法を教えてください。
API連携を構築する前に、ゲストデモのWeb UIから出力品質を評価できます。APIへのアクセスにはアカウントのAPIキーが必要で、有料プランでご利用いただけます。WebインターフェースとAPIは同じ抽出エンジンを共有しているため、テストで得られた出力は連携するかどうかを判断するのに役立ちます。
対応している入力形式と出力形式は何ですか?
アップロード:PDF(パスワード保護されたファイルを含む)、JPG、PNG、WebP、AVIF。出力:列名をキーとした構造化JSONに加え、バッチ単位でダウンロード可能なXLSXファイルとして出力できます。