ユーザー定義のテンプレートを使用して、PDF または Word ドキュメントからデータを抽出する必要がある場合があります。クラウド上であらゆるドキュメントを解析し、プログラムによってフィールドやテーブルのデータを抽出できます。この記事では、Python の REST API を使用して PDF ドキュメントから特定のデータを抽出する方法を説明します。
この記事では次のトピックについて説明します。
ドキュメント パーサー REST API および Python SDK
PDF ドキュメントを解析し、テンプレートに基づいてデータを抽出するには、GroupDocs.Parser Cloud の Python SDK API を使用します。 PDF ドキュメント、Microsoft Office ドキュメント、OpenDocument ファイル形式など、すべての一般的なドキュメント タイプのデータを解析できます。 SDK を使用すると、テンプレートによってテキスト、画像を抽出し、データを解析できます。また、クラウド API の ドキュメント パーサー ファミリ メンバー として、.NET、Java、PHP、Ruby、および Node.js SDK も提供します。
コンソールで次のコマンドを使用して pip (Python 用パッケージ インストーラー) を使用して GroupDocs.Parser Cloud を Python プロジェクトにインストールし、pdf から情報を抽出できます。
pip install groupdocs_parser_cloud
ダッシュボード からクライアント ID とクライアント シークレットを取得し、以下に示すコードを追加してください。
client_id = "da0c487d-c1c0-45ae-b7bf-43eaf53c5ad5"
client_secret = "479db2b01dcb93a3d4d20efb16dea971"
configuration = groupdocs_parser_cloud.Configuration(client_id, client_secret)
configuration.api_base_url = "https://api.groupdocs.cloud"
my_storage = ""
Pythonを使用したテンプレートオブジェクトによるデータの抽出
以下に示す簡単な手順に従って、テンプレートを使用して PDF ドキュメントからデータを抽出できます。
- PDFファイルをクラウドにアップロード
- Pythonを使用したテンプレートベースのデータ抽出
ドキュメントをアップロードする
まず、以下のコード例を使用して、PDF ドキュメントをクラウドにアップロードします。
# APIのインスタンスを作成する
file_api = groupdocs_parser_cloud.FileApi.from_config(configuration)
# サンプルファイルをアップロードする
request = groupdocs_parser_cloud.UploadFileRequest("companies.pdf", "C:\\Files\\companies.pdf", my_storage)
response = file_api.upload_file(request)
その結果、アップロードされた PDF ファイルは、クラウド上のダッシュボードの ファイル セクション で利用できるようになります。
Python を使用したテンプレートベースのデータ抽出
テンプレートに基づいてプログラムで PDF ファイルからデータを抽出するには、以下の手順に従ってください。
- ParseApiのインスタンスを作成する
- ParseOptions を定義し、PDF ファイルへのパスを設定します。
- テンプレートをオブジェクトとして作成する
- ParseRequestの作成
- ParseApi.parse() メソッドを呼び出して結果を取得します
次のコード サンプルは、REST API を使用して、定義されたテンプレートに従って PDF ドキュメントからデータを抽出する方法を示しています。
# APIの初期化
parseApi = groupdocs_parser_cloud.ParseApi.from_config(configuration)
# 解析オプションを定義する
options = groupdocs_parser_cloud.ParseOptions()
options.file_info = groupdocs_parser_cloud.FileInfo()
options.file_info.file_path = "companies.pdf"
# テンプレートオブジェクトの取得
options.template = GetTemplate()
# リクエストを解析する
request = groupdocs_parser_cloud.ParseRequest(options)
result = parseApi.parse(request)
# 結果を示す
for data in result.fields_data:
if data.page_area.page_text_area is not None:
print("Field name: " + data.name + ". Text :" + data.page_area.page_text_area.text)
if data.page_area.page_table_area is not None:
print("Table name: " + data.name)
for cell in data.page_area.page_table_area.page_table_area_cells:
print("Table cell. Row " + str(cell.row_index) + " column " + str(cell.column_index) + ". Text: " + cell.page_area.page_text_area.text);
PDFドキュメントに従って作成されたテンプレートを以下に示します。
def GetTemplate():
field1 = groupdocs_parser_cloud.Field()
field1.field_name = "Address"
fieldPosition1 = groupdocs_parser_cloud.FieldPosition()
fieldPosition1.field_position_type = "Regex"
fieldPosition1.regex = "Company address:"
field1.field_position = fieldPosition1
field2 = groupdocs_parser_cloud.Field()
field2.field_name = "CompanyAddress"
fieldPosition2 = groupdocs_parser_cloud.FieldPosition()
fieldPosition2.field_position_type = "Linked"
fieldPosition2.linked_field_name = "ADDRESS"
fieldPosition2.is_right_linked = True
size2 = groupdocs_parser_cloud.Size()
size2.width = 100
size2.height = 10
fieldPosition2.search_area = size2
fieldPosition2.auto_scale = True
field2.field_position = fieldPosition2
field3 = groupdocs_parser_cloud.Field()
field3.field_name = "Company"
fieldPosition3 = groupdocs_parser_cloud.FieldPosition()
fieldPosition3.field_position_type = "Regex"
fieldPosition3.regex = "Company name:"
field3.field_position = fieldPosition3
field4 = groupdocs_parser_cloud.Field()
field4.field_name = "CompanyName"
fieldPosition4 = groupdocs_parser_cloud.FieldPosition()
fieldPosition4.field_position_type = "Linked"
fieldPosition4.linked_field_name = "Company"
fieldPosition4.is_right_linked = True
size4 = groupdocs_parser_cloud.Size()
size4.width = 100
size4.height = 10
fieldPosition4.search_area = size4
fieldPosition4.auto_scale = True
field4.field_position = fieldPosition4
table = groupdocs_parser_cloud.Table()
table.table_name = "Companies"
detectorparams = groupdocs_parser_cloud.DetectorParameters()
rect = groupdocs_parser_cloud.Rectangle()
size = groupdocs_parser_cloud.Size()
size.height = 60
size.width = 480
position = groupdocs_parser_cloud.Point()
position.x = 77
position.y = 279
rect.size = size
rect.position = position
detectorparams.rectangle = rect
table.detector_parameters = detectorparams
fields = [field1, field2, field3, field4]
tables = [table]
template = groupdocs_parser_cloud.Template()
template.fields = fields
template.tables = tables
return template
Pythonを使用したテンプレートファイルによるデータの抽出
JSON ベースのテンプレート ファイルをプログラムで提供することで、PDF ドキュメントからデータを抽出することもできます。以下の手順に従って、テンプレート ファイルを提供してドキュメントを解析してください。
- ParseApiのインスタンスを作成する
- ParseOptions の定義
- PDFファイルへのパスを設定します
- テンプレートファイルへのパスを設定します
- ParseRequestの作成
- ParseApi.parse() メソッドを呼び出して結果を取得します
次のコード サンプルは、REST API を使用して PDF ドキュメントを解析し、JSON ファイルで提供されるテンプレートに従ってデータを抽出する方法を示しています。前述の手順に従ってファイルをアップロードしてください。
# APIの初期化
parseApi = groupdocs_parser_cloud.ParseApi.from_config(configuration)
# 解析オプションを定義する
options = groupdocs_parser_cloud.ParseOptions()
options.file_info = groupdocs_parser_cloud.FileInfo()
options.file_info.file_path = "companies.pdf"
options.template_path = "template.json"
# リクエストを解析する
request = groupdocs_parser_cloud.ParseRequest(options)
result = parseApi.parse(request)
# 結果を示す
for data in result.fields_data:
if data.page_area.page_text_area is not None:
print("Field name: " + data.name + ". Text :" + data.page_area.page_text_area.text)
if data.page_area.page_table_area is not None:
print("Table name: " + data.name)
for cell in data.page_area.page_table_area.page_table_area_cells:
print("Table cell. Row " + str(cell.row_index) + " column " + str(cell.column_index) + ". Text: " + cell.page_area.page_text_area.text);
JSON 形式のテンプレートを以下に示します。
{
"Fields": [
{
"FieldName": "Address",
"FieldPosition": {
"FieldPositionType": "Regex",
"Regex": "Companyaddress:"
}
},
{
"FieldName": "CompanyAddress",
"FieldPosition": {
"FieldPositionType": "Linked",
"LinkedFieldName": "ADDRESS",
"IsRightLinked": true,
"SearchArea": {
"Height": 10.0,
"Width": 100.0
},
"AutoScale": true
}
},
{
"FieldName": "Company",
"FieldPosition": {
"FieldPositionType": "Regex",
"Regex": "Companyname:"
}
},
{
"FieldName": "CompanyName",
"FieldPosition": {
"FieldPositionType": "Linked",
"LinkedFieldName": "Company",
"IsRightLinked": true,
"SearchArea": {
"Height": 10.0,
"Width": 100.0
},
"AutoScale": true
}
}
],
"Tables": [
{
"TableName": "Companies",
"DetectorParameters": {
"Rectangle": {
"Position": {
"X": 77.0,
"Y": 279.0
},
"Size": {
"Height": 41.0,
"Width": 480.0
}
}
}
}
]
}
PDF ファイルをオンラインで抽出する
PDF抽出ツールをオンラインで無料で使用するにはどうすればよいですか?次の無料のオンライン PDF 解析ツールと無料の PDF ページ抽出ツールをお試しください。このオンライン PDF 抽出ツールおよびオンライン PDF 抽出無料ツールは、上記の API を使用して開発されています。 https://products.groupdocs.app/parser/pdf
結論
この記事では、クラウド上で提供されているテンプレートに従って PDF ドキュメントから特定のデータを抽出する方法を学習しました。また、テンプレート オブジェクトを作成し、JSON 形式でテンプレートを提供する方法も学習しました。この記事では、PDF データをオンラインで抽出するために、プログラムで PDF ファイルをクラウドにアップロードする方法についても説明しました。 GroupDocs.Parser Cloud API の詳細については、ドキュメント を使用して学習できます。また、API リファレンス セクションも提供されており、ブラウザーを通じて直接 API を視覚化して操作できるようになります。
質問する
PDF からのデータ抽出およびオンラインでの PDF データ抽出についてご質問がある場合は、無料サポート フォーラム までお気軽にお問い合わせください。