AWS 文本截取解析器
Textract是一种AWS服务,它允许您从图片或PDF文档中提取出文本. 这个图书馆的建立是为了处理这个服务的反应,并把它变成一些可以管理的东西.
页:1: 目前此库只用于处理来自检测DocumentText呼叫的响应, 无论是同步还是同步响应 。 分析分析文档的电话可能会在稍后日期被添加.
理由
Textract 返回 json 表示它在输入中检测到的页面,行和单词. 下面是您可以期望的由两个单词组成的一行文字数据的简化示例. 如所见,数据描述了一棵树,其中一行被指为一行的孩子,一行被指为一行的孩子.
{
"DocumentMetaData": {
"Pages": 1
},
"Blocks": [
{
"Id": "1",
"BlockType": "PAGE",
"Relationships": [{
"Type": "CHILD",
"Ids": [ "2" ]
}]
},
{
"Id": "1",
"BlockType": "LINE",
"Relationships": [{
"Type": "CHILD",
"Ids": [ "3", "4" ]
}]
},
{ "Id": "3", "BlockType": "WORD" },
{ "Id": "4", "BlockType": "WORD" }
]
}
不幸的是,这棵树的结构被平整成一个阵列,这让它更尴尬,它应该是。 这个库的目的是处理这个平地的json来提供它所描述的树结构.
在一些测试中,与一行有关的词的顺序与文本的顺序不符. 这不是你期望的处理文件。 要解决这个问题, 库会将单词排序为左到右顺序( 根据他们在页面上的位置) .
使用量
模块的默认导出是一个支持三种不同方法的解析实例, handleDetectTextCallback, (中文(简体) ), handleDetectTextResponse,以及 parseGetTextDetection。 。 。 .
handleDetectTextCallback 是一种帮助方法,可以作为标准的回调方式传递到Textract方法。 反过来,它将与经过加工的树一起唤起另一个召回。 这种使用的例子如下:.
import { Textract } from 'aws-sdk'
import textractParser from '<TBD>'
const textract = new Textract()
const myCallback = (err, data) => {
if(err) {
console.log(err)
} else {
console.log(data)
}
}
const request = {
Document: {
S3Object: {
Bucket: "your-s3-bucket",
Name: "your-object-key"
}
}
}
textract.detectDocumentText(request,
textractParser.handleDetectTextCallback(myCallback))
handleDetectTextResponse 将取类型值 Textract.DetectDocumentTextResponse 并同步处理它。 这可以和AWS SDK提供的承诺一起使用. 下文举例说明如何以这种方式使用.
textract.detectDocumentText(request).promise()
.then(data => textractParser.parseDetectTextResponse(data))
.then(parsedData => console.log(parsedData))
.catch(err => console.log(err))
parseGetTextDetection 是用于GetDocumentText Detection操作的辅助方法。 此操作可以在多个请求中返回已处理的信息, 这在试图构建完整树时会产生问题 。 如果所有结果都以单一回复方式返回,则 handleDetectTextResponse 可按以上所示使用.
然而,如果情况并非如此,那么这个呼叫可以用来检索所有数据并构建树,如下所示. 要让 SDK 在不同环境中以不同方式配置,必须为此方法提供即时文本格式客户端.
const jobId = 'your-job-id'
const client = new AWS.Textract()
textract.detectDocumentText(client, jobId)
.then(parsedData => console.log(parsedData))
.catch(err => console.log(err))
页:1 这种方法将把整个结果集装入内存,这可能会给真正的大文档带来问题. 为10页文本文件提供一些上下文,从文本中返回的结果大小为7MB.
API 密码
见 API 文档 更多信息.
特别提及文档类的 API , 因为它构成了返回的树根 .