fbpx
< 戻る
印刷

PHPを使ってPDFからテキストを抽出する

目次

はじめに

以下のチュートリアルでは、ホスティングされたJPedalクラウドAPIを使ってPDFからテキストを抽出する方法を紹介します。セルフホスト型のJPedalマイクロサービスをセットアップすることもできます。

上記のサービスは古いHTTPリクエストでアクセスできますが、このチュートリアルでは、オープンソースのPHP IDRCloudClientを使用します。IDRCloudClientは、REST APIをシンプルなPHPラッパーとして提供します。

前提条件

composerを使って、以下のコマンドでidrsolutions-php-clientパッケージをインストールします:

				
					composer require idrsolutions/idrsolutions-php-client
				
			

サンプルコード

以下はPDFからテキストを抽出する基本的なコード例です。設定オプションと高度な機能は以下にあります。

				
					<?php

require_once __DIR__ . "/PATH/TO/vendor/autoload.php";

use IDRsolutions\IDRCloudClient;

$endpoint = "https://my-self-hosted-service.com/" . IDRCloudClient::INPUT_JPEDAL;  
$parameters = array(
    'input' => IDRCloudClient::INPUT_UPLOAD,
    'file' => __DIR__ . 'path/to/file.pdf',
    'settings' => '{"mode":"extractText","type":"plainText"}'
);

$results = IDRCloudClient::convert(array(
    'endpoint' => $endpoint,
    'parameters' => $parameters
));

IDRCloudClient::downloadOutput($results, __DIR__ . '/');

echo $results['downloadUrl'];
				
			

結果をコールバックURLに返信

JPedal マイクロサービスは、抽出の完了時にステータスを送信するコールバック URL を受け付けます。コールバックURLを使用すると、抽出がいつ完了したかを判断するためにサービスをポーリングする必要がなくなります。
コールバックURLは以下のように指定します。

				
					$parameters = array(
    'input' => IDRCloudClient::INPUT_UPLOAD,
    'callbackUrl' => 'http://listener.url',
    'file' => __DIR__ . 'path/to/file.pdf',
    'settings' => '{"mode":"extractText","type":"plainText"}'
);
				
			

設定オプション

JPedal APIは、抽出をカスタマイズするためのキーと値のペアの設定オプションを含む文字列化されたJSONオブジェクトを受け付けます。設定はパラメータ配列に追加する必要があります。PDFからテキストを抽出するための設定オプションの完全なリストはここにあります。

				
					'settings' => '{"key":"value","key":"value"}'

				
			

URLによるアップロード

ローカルファイルをアップロードするだけでなく、JPedalマイクロサービスがダウンロードして抽出を行うURLを指定することもできます。そのためには、inputとfileの値を以下のように置き換えてください。

				
					'input' => IDRCloudClient.DOWNLOAD
'url' => 'http://exampleURL/exampleFile.pdf'
				
			

認証の使用

PDFからテキストを抽出するためにユーザ名とパスワードを必要とする独自のJPedalマイクロサービスをデプロイする場合、変換のたびにユーザ名とパスワードを提供する必要があります。これらは、URLの前にユーザ名とパスワードを持つユーザフラグを追加することで提供されます。

				
					'username' => 'Username_If_Required',
'password' => 'Password_If_Required',
				
			

この場合、downloadOutput メソッドにも認証値を指定する必要があります。

				
					IDRCloudClient::downloadOutput($results, __DIR__ . '/','newFileName','username','password');

				
			
    MENU
    PAGE TOP