PDF ドキュメントを簡単に解析し、クラウド上のユーザー定義のテンプレートを使用して特定のデータを抽出できます。 PDF ファイルからフィールドとテーブル データをプログラムで抽出できます。この記事では、Node.js の REST API を使用して PDF からデータを抽出する方法を学びます。
この記事では次のトピックについて説明します。
- PDF からデータを抽出するための REST API と Node.js SDK
- Node.js で JSON ベースのテンプレート ファイルを使用してデータを抽出する
- Node.js のテンプレート オブジェクトを使用してデータを抽出する
- Node.js のテンプレートを使用してコンテナ内のドキュメントを解析する
PDF からデータを抽出するための REST API と Node.js SDK
PDF ドキュメントを解析し、テンプレートに基づいてデータを抽出するには、GroupDocs.Parser Cloud の Node.js SDK API を使用します。また、他の サポートされているドキュメント タイプ の解析や、テンプレートを使用したテキスト、画像、特定のデータの抽出も可能になります。コンソールで次のコマンドを使用してインストールしてください。
npm install groupdocs-parser-cloud
上記の手順に従う前に、ダッシュボードからクライアント ID とシークレットを取得してください。 ID とシークレットを取得したら、以下に示すようにコードを追加します。
// このコード例は、クライアント ID とシークレットを追加する方法を示しています。
global.clientId = "112f0f38-9dae-42d5-b4fc-cc84ae644972";
global.clientSecret = "16ad3fe0bdc39c910f57d2fd48a5d618";
global.myStorage = "";
const configuration = new groupdocs_parser_cloud.Configuration(clientId, clientSecret);
configuration.apiBaseUrl = "https://api.groupdocs.cloud";
Node.js で JSON ベースのテンプレート ファイルを使用してデータを抽出する
以下に示す簡単な手順に従って、テンプレートを使用して PDF ドキュメントからデータを抽出できます。
- PDFファイルをクラウドにアップロード
- JSON ベースのテンプレート ファイルを使用して PDF からデータを抽出
ドキュメントをアップロードする
まず、以下に示すコードサンプルを使用して、PDF ドキュメントをクラウドにアップロードして PDF をスクレイピングします。
// このコード例は、PDF ドキュメントをクラウドにアップロードする方法を示しています。
// FileApi を構築する
let fileApi = groupdocs_parser_cloud.FileApi.fromConfig(configuration);
let file = 'C:\\Files\\companies.pdf';
// ファイルの読み取り
fs.readFile(file, (err, fileStream) => {
// ファイルのアップロード要求
let request = new groupdocs_parser_cloud.UploadFileRequest("companies.pdf", fileStream, myStorage);
// ファイルをアップロードする
fileApi.uploadFile(request);
});
その結果、アップロードされた PDF ファイルは、クラウド上のダッシュボードの ファイル セクション で利用できるようになります。
JSON ベースのテンプレート ファイルを使用して PDF からデータを抽出する
以下の手順に従って、PDF ドキュメントを解析し、JSON ベースのテンプレート ファイルを使用してデータを抽出できます。
- ParseApi のインスタンスを作成します。
- アップロードされた PDF ファイルのパスを指定します。
- テンプレートの JSON ファイルへのパスを設定します。
- 最後に、ドキュメントを解析してデータを抽出します。
次のコード サンプルは、REST API を使用して JSON ファイルで提供されるテンプレートに従ってデータを抽出する方法を示しています。
// このコード例は、JSON ベースのテンプレートによって PDF ドキュメントを解析する方法を示します。
// APIのインスタンスを作成する
let parseApi = groupdocs_parser_cloud.ParseApi.fromConfig(configuration);
// 入力ファイルパス
let fileInfo = new groupdocs_parser_cloud.FileInfo()
fileInfo.filePath = "companies.pdf"
// 解析オプションの作成
let options = new groupdocs_parser_cloud.ParseOptions();
options.fileInfo = fileInfo;
options.templatePath = "template.json";
// 解析リクエストの作成
let request = new groupdocs_parser_cloud.ParseRequest(options);
// 文書を解析する
let response = await parseApi.parse(request);
// 表示出力
response.fieldsData.forEach(data => {
if (data.pageArea.pageTextArea != null) {
console.log("Field name: " + data.name + ". Text :" + data.pageArea.pageTextArea.text);
}
if (data.pageArea.pageTableArea != null) {
console.log("Table name: " + data.name);
data.pageArea.pageTableArea.pageTableAreaCells.forEach(cell => {
console.log("Table cell. Row " + cell.rowIndex + " column " + cell.columnIndex + ". Text: " + cell.pageArea.pageTextArea.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
}
}
}
}
]
}
Node.js のテンプレート オブジェクトを使用してデータを抽出する
以下の手順に従って、オブジェクトとして定義されたテンプレートに基づいて PDF ファイルからデータを抽出できます。
- ParseApi のインスタンスを作成します。
- アップロードされた PDF ファイルのパスを指定します。
- テンプレートをオブジェクトとして初期化します。
- 最後に、ドキュメントを解析してデータを抽出します。
次のコード サンプルは、REST API を使用して、定義されたテンプレートに従って PDF ドキュメントからデータを抽出する方法を示しています。前述の手順に従ってファイルをアップロードしてください。
// このコード例は、Template オブジェクトによって PDF ドキュメントを解析する方法を示します。
// APIの初期化
let parseApi = groupdocs_parser_cloud.ParseApi.fromConfig(configuration);
// 入力ファイル
let fileInfo = new groupdocs_parser_cloud.FileInfo();
fileInfo.filePath = "companies.pdf";
// 解析オプションを定義する
let options = new groupdocs_parser_cloud.ParseOptions();
options.fileInfo = fileInfo;
// テンプレートオブジェクトの取得
options.template = GetTemplate();
// 解析リクエストの作成
let request = new groupdocs_parser_cloud.ParseRequest(options);
// 書類を渡す
let result = await parseApi.parse(request);
// 結果を示す
result.fieldsData.forEach(data => {
if (data.pageArea.pageTextArea != null) {
console.log("Field name: " + data.name + ". Text :" + data.pageArea.pageTextArea.text);
}
if (data.pageArea.pageTableArea != null) {
console.log("Table name: " + data.name);
data.pageArea.pageTableArea.pageTableAreaCells.forEach(cell => {
console.log("Table cell. Row " + cell.rowIndex + " column " + cell.columnIndex + ". Text: " + cell.pageArea.pageTextArea.text);
});
}
});
PDF からデータをスクレイピングするために、PDF ドキュメントに従って作成されたテンプレート オブジェクトを以下に示します。
// このコード例は、テンプレート オブジェクトを示します。
let field1 = new groupdocs_parser_cloud.Field();
field1.fieldName = "Address";
let fieldPosition1 = new groupdocs_parser_cloud.FieldPosition();
fieldPosition1.fieldPositionType = "Regex";
fieldPosition1.regex = "Company address:";
field1.fieldPosition = fieldPosition1;
let field2 = new groupdocs_parser_cloud.Field();
field2.fieldName = "CompanyAddress";
let fieldPosition2 = new groupdocs_parser_cloud.FieldPosition();
fieldPosition2.fieldPositionType = "Linked";
fieldPosition2.linkedFieldName = "ADDRESS";
fieldPosition2.isRightLinked = true;
let size2 = new groupdocs_parser_cloud.Size();
size2.width = 100;
size2.height = 10;
fieldPosition2.searchArea = size2;
fieldPosition2.autoScale = true;
field2.fieldPosition = fieldPosition2;
let field3 = new groupdocs_parser_cloud.Field();
field3.fieldName = "Company";
let fieldPosition3 = new groupdocs_parser_cloud.FieldPosition();
fieldPosition3.fieldPositionType = "Regex";
fieldPosition3.regex = "Company name:";
field3.fieldPosition = fieldPosition3;
let field4 = new groupdocs_parser_cloud.Field();
field4.fieldName = "CompanyName";
let fieldPosition4 = new groupdocs_parser_cloud.FieldPosition();
fieldPosition4.fieldPositionType = "Linked";
fieldPosition4.linkedFieldName = "Company";
fieldPosition4.isRightLinked = true;
let size4 = new groupdocs_parser_cloud.Size();
size4.width = 100;
size4.height = 10;
fieldPosition4.searchArea = size4;
fieldPosition4.autoScale = true;
field4.fieldPosition = fieldPosition4;
let table = new groupdocs_parser_cloud.Table();
table.tableName = "Companies";
let detectorparams = new groupdocs_parser_cloud.DetectorParameters();
let rect = new groupdocs_parser_cloud.Rectangle();
let size = new groupdocs_parser_cloud.Size();
size.height = 60;
size.width = 480;
let position = new groupdocs_parser_cloud.Point();
position.x = 77;
position.y = 279;
rect.size = size;
rect.position = position;
detectorparams.rectangle = rect;
table.detectorParameters = detectorparams;
let fields = [field1, field2, field3, field4];
let tables = [table];
let template = new groupdocs_parser_cloud.Template();
template.fields = fields;
template.tables = tables;
return template;
Node.js のテンプレートを使用してコンテナ内のドキュメントを解析する
コンテナ内で利用可能な PDF ドキュメントを解析し、テンプレート オブジェクトを使用してデータを抽出することもできます。以下の手順に従ってドキュメントを解析し、コンテナ内のスキャンされた PDF からデータを抽出してください。
- ParseApi のインスタンスを作成します。
- アップロードされたアーカイブ ファイルのパスを指定します。
- テンプレートをオブジェクトとして初期化します。
- コンテナアイテムを提供します。
- 最後に、ドキュメントを解析してデータを抽出します。
次のコード サンプルは、REST API を使用して ZIP アーカイブ内の PDF ドキュメントを解析する方法を示しています。前述の手順に従ってファイルをアップロードし、PDF から情報を抽出してください。
// このコード例は、コンテナ内で利用可能な PDF ドキュメントを解析する方法を示します。
// APIの初期化
let parseApi = groupdocs_parser_cloud.ParseApi.fromConfig(configuration);
// 入力ファイルパス
let fileInfo = new groupdocs_parser_cloud.FileInfo();
fileInfo.filePath = "archive.zip";
// 解析オプションの作成
let options = new groupdocs_parser_cloud.ParseOptions();
options.fileInfo = fileInfo;
// テンプレートオブジェクトを取得する
options.template = GetTemplate();
// コンテナアイテム情報
let containerItemInfo = new groupdocs_parser_cloud.ContainerItemInfo();
containerItemInfo.relativePath = "companies.pdf";
options.containerItemInfo = containerItemInfo;
// 解析リクエストの作成
let request = new groupdocs_parser_cloud.ParseRequest(options);
// リクエストの作成
let response = await parseApi.parse(request);
// 表示出力
response.fieldsData.forEach(data => {
if (data.pageArea.pageTextArea != null) {
console.log("Field name: " + data.name + ". Text :" + data.pageArea.pageTextArea.text);
}
if (data.pageArea.pageTableArea != null) {
console.log("Table name: " + data.name);
data.pageArea.pageTableArea.pageTableAreaCells.forEach(cell => {
console.log("Table cell. Row " + cell.rowIndex + " column " + cell.columnIndex + ". Text: " + cell.pageArea.pageTextArea.text);
});
}
});
オンラインで試す
オンラインで PDF データを抽出するには、次の無料のオンライン PDF 解析ツールをお試しください。この PDF コンテンツ抽出プログラムは、上記の API を使用して開発されています。 https://products.groupdocs.app/parser/pdf
結論
この記事では、クラウド上で提供されているテンプレートに従って PDF ドキュメントから特定のデータを抽出する方法を学習しました。また、テンプレート オブジェクトを作成する方法、または JSON 形式のテンプレートを使用する方法も学習しました。これで、pdf スクレーパー API と無料の PDF データ抽出ツールを使用して PDF から情報を抽出する方法がわかりました。さらに、GroupDocs.Parser Cloud API の詳細については、ドキュメント を使用して学習できます。また、ブラウザーを通じて API を直接視覚化して操作できる API リファレンス セクションも提供しています。不明な点がある場合は、フォーラム までお気軽にお問い合わせください。