Я пытаюсь использовать Amazon Textract API для анализа содержимого PDF-файлов и извлечения электронных писем, однако, похоже, вам нужно использовать метод async
; Я сделал это, но не могу увидеть / распечатать данные.
Вот мой код:
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
//set environment values
define('AWS_ACCESS_KEY_ID', '');
define('AWS_SECRET_ACCESS_KEY', '');
//require SDK
require 'vendor/autoload.php';
use Aws\Textract\TextractClient;
function get_emails($file_path)
{
$client = new TextractClient([
'region' => 'us-east-1',
'version' => 'latest',
'credentials' => [
'key' => AWS_ACCESS_KEY_ID,
'secret' => AWS_SECRET_ACCESS_KEY
]
]);
$file = fopen($file_path, "rb");
$contents = fread($file, filesize($file_path));
fclose($file);
$options = [
'Document' => [
'Bytes' => $contents
],
'FeatureTypes' => ['FORMS'],
];
$promise = $client->analyzeDocumentAsync($options);
$promise->then(
// $onFulfilled
function ($value) {
echo 'The promise was fulfilled.';
processResult($value);
},
// $onRejected
function ($reason) {
echo 'The promise was rejected.';
}
);
}
function processResult($result) {
$blocks = $result['Blocks'];
// Loop through all the blocks:
foreach ($blocks as $key => $value) {
if (isset($value['BlockType']) && $value['BlockType']) {
$blockType = $value['BlockType'];
if (isset($value['Text']) && $value['Text']) {
$text = $value['Text'];
if ($blockType == 'WORD') {
echo "Word: ". print_r($text, true) . "\n";
} else if ($blockType == 'LINE') {
echo "Line: ". print_r($text, true) . "\n";
}
}
}
}
}
get_emails('1.pdf');
Если я запускаю это через браузер или консоль, я не получаю данных