PHP を使用して PDF から単語を抽出する方法

## ステップ1: PHP PDF APIのライセンスを取得してアクセスする
 
オリジナル: [Extract text from PDF](https://www.compdf.com/blog/extract-text-from-pdf-php-pdf-api?utm_source=qiita_20241126&utm_medium=extracttext_phpapi)

ComPDFKit API ユーザーには、1000 件の PDF API リクエストを無料で提供しています。ライセンスにアクセスして API リクエストを開始するには、以下の手順に従ってください。

 

1. ダッシュボードに移動するには、ComPDFKit APIを登録します。ダッシュボードには、API キー、API プランの進行状況、API リクエストのステータスが表示されます。

2. プロジェクトを作成し、公開キーと秘密キーを取得します。

アカウントが作成されると、デフォルトのプロジェクトが作成されます。ComPDFKit API を呼び出すために、さらにプロジェクトを作成できます。サポートされているすべての PDF API は、ドキュメント ページで確認できます。

 

各プロジェクトには固有の公開キーと秘密キーがあります。対応するプロジェクトに適切なキーを適用することを忘れないでください。



## ステップ2: PDFテキスト抽出のための認証PDF API
 

accessToken を取得するには、実際の publicKey と secretKey を置き換える必要があります。次に、accessToken を使用してタスクを作成し、ファイルをアップロードし、PDF の単語を抽出し、抽出された PDF テキスト JSON ファイルを取得します。

 
ComPDFKit PDF テキスト抽出 API を認証するための PHP コード例:
```
$params = [
    'publicKey' => $publicKey,
    'secretKey' => $secretKey
];
$headers = ['Content-Type: application/json'];
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api-server.compdf.com/server/v1/oauth/token',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_POSTFIELDS => json_encode($params)
));
$response = curl_exec($curl);
curl_close($curl);
$result = json_decode($response, true);
$accessToken = $result['data']['accessToken'];
$bearerToken = "Bearer $accessToken";
```


## ステップ3: タスクの作成 - PDFテキストの抽出
 

前の手順で取得したaccessTokenを置き換える必要があります。エラー情報を表示する言語タイプを設定します (1、英語、2、中国語)。ComPDFKit PDF API パラメータは、クイック スタート-->リクエストの説明ページにあります。


これらを置き換えると、応答データにtaskId が取得されます。PDF テキスト抽出タスクを作成する PHP コード例:
```
$headers = [
    'Content-Type: application/json',
    'Authorization: ' . $bearerToken
];
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api-server.compdf.com/server/v1/task/pdf/json?language=' . $language,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_HTTPHEADER => $headers,
));
$response = curl_exec($curl);
curl_close($curl);
$result = json_decode($response, true);
$taskId = $result['data']['taskId'];
``` 

 

## ステップ4: PDFパーサー用のファイルをアップロードする
 
PHP コード内の情報を置き換えます。
- PDF ファイル: テキストを抽出する PDF。
- taskId : タスク作成ステップで取得されます。
- 言語: エラー情報を表示する言語。
- accessToken : 認証手順で取得されます。

ComPDFKit API は AI、OCR などを提供します。この手順でパラメータを入力することもできます。

- type：抽出する内容のオプション（0:テキスト、1:表）デフォルトは0。
- isAllowOcr : OCR を開くことを許可するかどうか (1: はい、0: いいえ)、デフォルトは 0。
- isOnlyAiTable : AI がテーブルを認識できるようにするかどうか (1: はい、0: いいえ) デフォルトは 0。

PDF を解析用にアップロードするための PHP コード例:
```
$params = [
    'taskId' => $taskId, // ID of your task
    'file' => new CURLFile($pdfPath), // Files you need to process
    'language' => $language,
    'password' => '',
    'parameter' => json_encode(['type' => 1, 'isAllowOcr' => 1, 'isContainOcrBg' => 0])
];
$headers = [
    'Authorization: ' . $bearerToken
];
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api-server.compdf.com/server/v1/file/upload',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_POSTFIELDS => $params
));
$response = curl_exec($curl);
curl_close($curl);
$result = json_decode($response, true);
$fileKey = $result['data']['fileKey'];
```


## ステップ5: アップロードされたPDFファイルからテキストを処理および抽出する
 

アップロードした PDF から単語を抽出するには、タスクを実行します。PHP コードの例は次のとおりです。
```
$headers = [
    'Content-Type: application/json',
    'Authorization: ' . $bearerToken
];
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api-server.compdf.com/server/v1/execute/start?language=' . $language . '&taskId=' . $taskId,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_HTTPHEADER => $headers,
));
$response = curl_exec($curl);
curl_close($curl);
```


#3 ステップ6: PDFテキスト抽出のタスク情報を取得する
 
タスク情報を取得するには、以下の PHP コード例に従ってください。taskIdやaccess_tokenなどの必要な情報を置き換えます。 PDF PDF パーサーと抽出された結果ファイルは、PDF テキスト抽出の再利用に役立つ構造化データ形式である JSON ファイルで提供されます。
```
$headers = [
    'Content-Type: application/json',
    'Authorization: ' . $bearerToken
];

$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api-server.compdf.com/server/v1/task/taskInfo' . '?taskId=' . $taskId,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_HTTPHEADER => $headers,
));
$response = curl_exec($curl);
curl_close($curl);
$result = json_decode($response, true);
```