以下是一个使用AWS Textract和Node.js从本地文件中检测文档的示例代码:
const AWS = require('aws-sdk');
const textract = new AWS.Textract();
const fs = require('fs');
async function detectDocument() {
// 读取本地文件的内容
const fileContent = fs.readFileSync('path/to/local/file.pdf');
// 将文件内容转换为Base64编码
const base64FileContent = fileContent.toString('base64');
// 构造Textract请求对象
const params = {
Document: {
Bytes: Buffer.from(base64FileContent, 'base64')
}
};
try {
// 发起Textract请求
const response = await textract.startDocumentTextDetection(params).promise();
// 获取作业ID
const jobId = response.JobId;
// 等待作业完成
await waitForJobCompletion(jobId);
// 获取作业结果
const result = await getJobResults(jobId);
console.log(result);
} catch (error) {
console.log(error);
}
}
async function waitForJobCompletion(jobId) {
// 创建延迟函数,等待一段时间再继续轮询
const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
// 定义轮询间隔时间
const pollingInterval = 5000; // 5秒
while (true) {
// 获取作业状态
const response = await textract.getDocumentTextDetection({ JobId: jobId }).promise();
const status = response.JobStatus;
if (status === 'SUCCEEDED' || status === 'FAILED') {
// 作业已完成,退出循环
break;
}
// 作业未完成,等待一段时间后继续轮询
await delay(pollingInterval);
}
}
async function getJobResults(jobId) {
const response = await textract.getDocumentTextDetection({ JobId: jobId }).promise();
return response.Blocks;
}
detectDocument();
请注意,上述代码中的path/to/local/file.pdf
应替换为您要检测的实际本地文件路径。