高品質のビジネスPDF文書を、AIモデルで使用できるよりシンプルなファイル形式に変換します。
watsonx.aiREST API の文書テキスト抽出メソッドを使用すると、高度に構造化され、情報を伝えるために図や画像、表を使用している PDF ファイルを、マークダウンや JSON のような、プログラムで作業しやすいファイル形式に変換することができます。
テキスト抽出は有料プランでのみご利用いただけます。 請求は処理されたページ数に基づいて行われる。 詳しくは、ジェネレーティブAI資産の課金詳細をご覧ください。
このようにビジネス文書を簡素化することは、ユーザーのクエリに関連する情報を見つけ、それをfoundation modelの入力に含めたいような、検索を強調した生成タスクに特に有効である。 モデル入力に正確な文脈情報を含めることで、foundation modelモデルが事実に基づいた最新の情報をモデル出力に取り込むことができる。 詳しくは、検索補強世代(RAG)を参照。
テキスト抽出APIは、IBMが開発した自然言語理解技術を適用し、文書構造を識別します。
テキスト抽出は、一度に1つのファイルを変換する非同期プロセスです。 一連の文書からテキストを抽出するために、並列メソッド要求を行うことができる。
サポートされるファイル・タイプ
APIを使用して、以下のファイルタイプからテキストを抽出できます:
- GIF
- JPG
- PNG
- TIFF
抽出したテキストは以下の形式で保存できます:
- JSON
- マークダウン
ドキュメントの管理
処理したいドキュメントをIBM Cloud Object Storageに追加し、APIから参照できるようにする。
クレデンシャルにAccess キーと Secret キーのペアを使用する接続アセットのみがサポートされます。 接続のセットアップ方法の詳細については、APIからファイルを参照するを参照のこと。
例えば、IBM Cloud Object Storageに追加したファイルを次のように参照します:
"document_location": {
"type": "connection_asset",
"connection": {
"id": "6f5688fd-f3bf-42c2-a18b-49c0d8a1920d"
},
"location": {
"file_name": "document.pdf",
"bucket":"janessandbox"
}
}
生成された出力ファイルを保存する場所を以下のように定義する:
"results_location": {
"type": "connection_asset",
"connection": {
"id": "6f5688fd-f3bf-42c2-a18b-49c0d8a1920d"
},
"location": {
"file_name": "extracted_document.json"
}
}
サポート対象言語
画像からテキストを抽出する機能は、光学式文字認識(OCR)と呼ばれる。 この機能は、画像、図、またはスキャンしたPDFなどのファイルに埋め込まれたテキストに描かれた情報を保存するのに便利です。
光学式文字認識はノイズの多い画像からテキストを抽出できるが、画像ファイルの品質は最低でも80DPI(ドット/インチ)の要件を満たしていなければならない。
変換したい画像付き文書が英語以外の言語で書かれている場合は、リクエストのlanguage_list
パラメータにISO 639言語コードで言語を指定する必要があります。
"languages_list": [
"fr"
]
文書に複数の言語が混在している場合は、各言語を別々に記載する。 光学文字認識は、言語が共通のスクリプトを共有している場合にのみ、混合言語文書の画像を変換することができます。 たとえば、英語とフランス語のテキストが混在する文書の画像からテキストを抽出することができます。 ただし、日本語と英語のテキストが混在する文書では、OCRを使って画像からテキストを抽出することはできない。
光学式文字認識機能は、以下の言語で書かれた文書の画像からテキストを抽出することができます:
言語 | ISO639言語コード | スクリプト |
---|---|---|
中国語 (簡体字) | zh-CN |
中国語 |
中国語(繁体字) | zh-TW |
中国語 |
デンマーク語 | da |
ラテン |
オランダ語 | nl |
ラテン |
英語 | en |
ラテン |
英語の筆跡 | en_hw |
ラテン |
フィンランド語 | fi |
ラテン |
フランス語 | fr |
ラテン |
ドイツ語 | de |
ラテン |
ギリシャ語 | el |
ギリシャ語 |
ユダヤ暦 | he |
ユダヤ暦 |
イタリア語 | it |
ラテン |
日本語 | ja |
日本語 |
韓国語 | ko |
韓国語 |
ノルウェー語 (ブークモール) | nb |
ラテン |
ノルウェー語 (ニーノシュク) | nn |
ラテン |
ポーランド語 | pl |
ラテン |
ポルトガル語 | pt |
ラテン |
スペイン語 | es |
ラテン |
スウェーデン語 | sv |
ラテン |
表からテキストを抽出する
文書内の表形式データを、表情報を取り込んだ消費可能なテキストに変換する。 多くの大規模言語モデルは、表形式の情報を正しく解釈することが難しい。
テーブル変換を有効にするには、リクエストに以下のパラメータを指定します。
"steps": {
"tables_processing": {
"enabled": true
}
}
出力ファイル形式の選択
デフォルトでは、抽出されたテキストはJSON構文で記述される。 抽出されたテキストを代わりにマークダウンで記述したい場合は、APIリクエスト・ボディに以下のパラメータを指定する:
"assembly_md": {}
API の詳細
次の図は、文書テ キ ス ト 抽出 API を使っ て、 ビ ジネ ス文書の構造情報を抽出す る 際に使用す る ワー ク フ ロ ーを示 し ます。
REST API を使用してビジネス文書からテキストを抽出するには、以下のハイレベルな手順に従ってください:
テキストを抽出したいファイルを IBM Cloud Object Storage バケットに追加し、watsonx.ai プロジェクトから IBM Cloud Object Storage サービス・インスタンスへの接続を定義します。
詳しくは、APIからファイルを参照するを参照してください。
テキスト抽出リクエストの開始メソッドを使用して、テキスト抽出処理を開始します。
metadata.id
フィールドに返されるIDに注目してください。 次のステップでリクエストのステータスを確認するために、このIDを抽出IDとして使用します。リクエストのステータスを確認するには、リクエストの結果を取得するメソッドリクエストを使ってください。
ステータスをチェックすることは、プロセスが何らかの理由で失敗したかどうかを知る唯一の方法である。
ステータスが
Completed
の場合、抽出されたテキストファイルは指定されたIBM Cloud Object Storageバケットで利用可能です。生成されたファイルをCloud Object Storageからダウンロードする。
APIメソッドの詳細については、APIリファレンス・ドキュメントを参照のこと。
要求の例
例えば、次のコマンドは、'retail_guidebook.pdf
ファイルからテキストを抽出し、マークダウン形式で保存するリクエストを送信する。
curl -X POST \
'https://{region}.ml.cloud.ibm.com/ml/v1/text/extractions?version=2024-10-18' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJraWQiOi...'
リクエスト・ボディは以下のようになる:
{
"project_id": "e40e5895-ce4d-42a3-b699-8ac764b89a09",
"document_reference": {
"type": "connection_asset",
"connection": {
"id": "5c0cefce-da57-408b-b47d-58f7785de3ee"
},
"location": {
"bucket":"my-cloud-object-storage-bucket",
"file_name": "retail_guidebook.pdf"
}
},
"results_reference": {
"type": "connection_asset",
"connection": {
"id": "5c0cefce-da57-408b-b47d-58f7785de3ee"
},
"location": {
"bucket":"my-cloud-object-storage-bucket",
"file_name": "output_retail.md"
}
},
"steps": {
"ocr": {
"languages_list": [
"en"
]
},
"tables_processing": {
"enabled": true
}
},
"assembly_md": {}
}
レスポンスから、64162e0a-b05d-4ba6-a688-422893f58663
のようにmetadata.id
をコピーします。 抽出プロセスのステータスを確認するために使用するエンドポイントで、この ID を指定します。
curl -X GET \
'https://{region}.ml.cloud.ibm.com/ml/v1/text/extractions/64162e0a-b05d-4ba6-a688-422893f58663?project_id=e40e5895-ce4d-42a3-b699-8ac764b89a09&version=2024-09-23' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer eyJraWQiOi...'
出力の詳細
抽出されたテキストは、「results_reference.location.file_name
フィールドで指定した名前のマークダウン・ファイルに書き込まれる。
マークダウンは、セクションや表などの文書の構造をキャプチャする。 例えば、以下の画像は、テキストが抽出された後、元のPDFファイルの表がマークダウンでどのように表現されるかを示しています。 マークダウン表のプレビューが含まれ、抽出後もPDF内の元の表のテキストがそのまま残っていることを示します。
JSON出力例
テキストがJSONファイルに抽出されると、結果として得られるファイルには、セクション、段落、表構造、トークンなど、文書内のさまざまなデータ構造に関する詳細が含まれる。
JSON形式で抽出されたテキストを扱う方法の詳細については、テキスト抽出によって生成されたJSON構造を解析するを参照してください。
PDFファイルから抽出したテキストを使用する
生成されたマークダウン・ファイルをテキスト・ファイルに変換するには、ファイルの拡張子を'.md
から'.txt
に変更します。 出来上がったテキストファイルにはマークダウンのタグが含まれている。 タグ付けを削除したい場合は、パーサー・ライブラリを使ってタグを見つけて変換することができる。
JSONプロセッサ・ライブラリを使用すると、生成されたJSONファイルからテキストを抽出し、プレーン・テキストとして保存することができる。 たとえば、次のコマンドは、文書内のすべての構造について、各トークンからテキストを抽出し、parsed_output_text.txt
という名前のファイルにテキストを格納します:
cat output_retail.json | jq '[.all_structures.tokens[].text] | join(" ")' > parsed_output_text.txt
生成されたファイルをTXTファイルに変換した後、抽出されたテキストを以下の方法でfoundation modelのコンテキスト情報として使用できます:
Pythonノートブックから抽出したテキストを参照する。
例えば、 watsonx, Chroma,LangChainて質問に答える (RAG)サンプルノートブックでは、'
state_of_the_union.txt
ファイルの代わりに TXT ファイルを使うことができます。TXTファイルは Prompt Lab における基本文書として使用できます。 詳細は、 コンテキスト情報にあるfoundation modelのプロンプトを参照してください。
詳細情報
親トピック 生成的AIソリューションのコーディング