Amazon Textract包,通过几何信息更轻松地访问数据
项目描述
Textract-Pipeline-GeoFinder
提供使用几何信息提取信息的功能。
用例包括
- 为Amazon Textract AnalyzeDocument API的FORMS功能提供键值对上下文
- 在特定区域查找值
安装
> python -m pip install amazon-textract-geofinder
请确保您的环境通过配置文件、环境变量或附加的角色设置了AWS凭证。(https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
概念
使用此库在文档中根据几何形状查找信息时,与定义预期的值所在位置的x,y坐标相比,主要优势是区域的概念。
一个区域最终由一个包含x_min、y_min、x_max、y_max坐标的框定义,但也可以通过在文档中查找单词/短语来定义,然后使用这些单词/短语创建区域。
从那里,解析区域中信息的函数有助于提取信息。例如,通过根据问题“你最近有没有感觉到发烧或发热?”定义区域,我们可以将其答案与之关联,并创建一个针对此问题的特定键值对。
示例
获取键值对的上下文
示例图像
带有FORMS功能的Amazon Textract AnalyzeDocument API返回以下键
| 键 | 值 |
|---|---|
| 名 | ALEJANDRO |
| 名 | Carlos |
| 与患者的关联 | 兄弟 |
| 名 | Jane |
| 婚姻状况 | 已婚 |
| 电话 | 646-555-0111 |
| 姓 | SALAZAR |
| 电话 | 212-555-0150 |
| 与患者的关联 | 朋友 |
| 姓 | ROSALEZ |
| 城市 | ANYTOWN |
| 电话 | 650-555-0123 |
| 地址 | 123 ANY STREET |
| 是 | 已选中 |
| 是 | 未选中 |
| 出生日期 | 10/10/1982 |
| 姓 | DOE |
| 性别 | M |
| 是 | 未选中 |
| 是 | 未选中 |
| 是 | 未选中 |
| 州 | CA |
| 邮政编码 | 12345 |
| 电子邮件地址 | |
| 否 | 未选中 |
| 否 | 已选中 |
| 否 | 未选中 |
| 是 | 已选中 |
| 否 | 已选中 |
| 否 | 已选中 |
| 否 | 已选中 |
但是,哪个文档部分包含各个键的信息并不明显。大多数键出现多次,我们希望为它们提供上下文,将它们与“患者”、“紧急联系人1”、“紧急联系人2”或特定问题关联起来。
这个Jupyter笔记本通过示例进行指导:示例笔记本。确保在本地启动笔记本时设置AWS凭证,或使用包括Amazon Textract权限的角色SageMaker笔记本。
此代码片段来自笔记本。
python -m pip install amazon-textract-helper amazon-textract-geofinder
from textractgeofinder.ocrdb import AreaSelection
from textractgeofinder.tgeofinder import KeyValue, TGeoFinder, AreaSelection, SelectionElement
from textractprettyprinter.t_pretty_print import get_forms_string
from textractcaller import call_textract
from textractcaller.t_call import Textract_Features
import trp.trp2 as t2
image_filename='./tests/data/patient_intake_form_sample.jpg'
j = call_textract(input_document=image_filename, features=[Textract_Features.FORMS])
t_document = t2.TDocumentSchema().load(j)
doc_height = 1000
doc_width = 1000
geofinder_doc = TGeoFinder(j, doc_height=doc_height, doc_width=doc_width)
def set_hierarchy_kv(list_kv: list[KeyValue], t_document: t2.TDocument, page_block: t2.TBlock, prefix="BORROWER"):
for x in list_kv:
t_document.add_virtual_key_for_existing_key(key_name=f"{prefix}_{x.key.text}",
existing_key=t_document.get_block_by_id(x.key.id),
page_block=page_block)
# patient information
patient_information = geofinder_doc.find_phrase_on_page("patient information")[0]
emergency_contact_1 = geofinder_doc.find_phrase_on_page("emergency contact 1:", min_textdistance=0.99)[0]
top_left = t2.TPoint(y=patient_information.ymax, x=0)
lower_right = t2.TPoint(y=emergency_contact_1.ymin, x=doc_width)
form_fields = geofinder_doc.get_form_fields_in_area(
area_selection=AreaSelection(top_left=top_left, lower_right=lower_right))
set_hierarchy_kv(list_kv=form_fields, t_document=t_document, prefix='PATIENT', page_block=t_document.pages[0])
set_hierarchy_kv(list_kv=form_fields, t_document=t_document, prefix='PATIENT', page_block=t_document.pages[0])
print(get_forms_string(t2.TDocumentSchema().dump(t_document)))
| 键 | 值 |
|---|---|
| ... | ... |
| PATIENT_first name | ALEJANDRO |
| PATIENT_address | 123 ANY STREET |
| PATIENT_sex | M |
| PATIENT_state | CA |
| PATIENT_zip code | 12345 |
| PATIENT_marital status | 已婚 |
| PATIENT_last name | ROSALEZ |
| PATIENT_phone | 646-555-0111 |
| PATIENT_email address | |
| PATIENT_city | ANYTOWN |
| PATIENT_date of birth | 10/10/1982 |
使用带有示例的Amazon Textact Helper命令行工具
这将显示完整的输出,就像笔记本一样。
> python -m pip install amazon-textract-helper amazon-textract-geofinder
> cat tests/data/patient_intake_form_sample.json| bin/amazon-textract-geofinder | amazon-textract --stdin --pretty-print FORMS
| 键 | 值 |
|---|---|
| 名 | ALEJANDRO |
| 名 | Carlos |
| 与患者的关联 | 兄弟 |
| 名 | Jane |
| 婚姻状况 | 已婚 |
| 电话 | 646-555-0111 |
| 姓 | SALAZAR |
| 电话 | 212-555-0150 |
| 与患者的关联 | 朋友 |
| 姓 | ROSALEZ |
| 城市 | ANYTOWN |
| 电话 | 650-555-0123 |
| 地址 | 123 ANY STREET |
| 是 | 已选中 |
| 是 | 未选中 |
| 出生日期 | 10/10/1982 |
| 姓 | DOE |
| 性别 | M |
| 是 | 未选中 |
| 是 | 未选中 |
| 是 | 未选中 |
| 州 | CA |
| 邮政编码 | 12345 |
| 电子邮件地址 | |
| 否 | 未选中 |
| 否 | 已选中 |
| 否 | 未选中 |
| 是 | 已选中 |
| 否 | 已选中 |
| 否 | 已选中 |
| 否 | 已选中 |
| PATIENT_first name | ALEJANDRO |
| PATIENT_address | 123 ANY STREET |
| PATIENT_sex | M |
| PATIENT_state | CA |
| PATIENT_zip code | 12345 |
| PATIENT_marital status | 已婚 |
| PATIENT_last name | ROSALEZ |
| PATIENT_phone | 646-555-0111 |
| PATIENT_email address | |
| PATIENT_city | ANYTOWN |
| PATIENT_date of birth | 10/10/1982 |
| EMERGENCY_CONTACT_1_first name | Carlos |
| EMERGENCY_CONTACT_1_phone | 212-555-0150 |
| EMERGENCY_CONTACT_1_relationship to patient | 兄弟 |
| EMERGENCY_CONTACT_1_last name | SALAZAR |
| EMERGENCY_CONTACT_2_first name | Jane |
| EMERGENCY_CONTACT_2_phone | 650-555-0123 |
| EMERGENCY_CONTACT_2_last name | DOE |
| EMERGENCY_CONTACT_2_relationship to patient | 朋友 |
| FEVER->YES | 已选中 |
| FEVER->NO | 未选中 |
| SHORTNESS->YES | 未选中 |
| SHORTNESS->NO | 已选中 |
| COUGH->YES | 未选中 |
| COUGH->NO | 已选中 |
| LOSS_OF_TASTE->YES | 未选中 |
| LOSS_OF_TASTE->NO | 已选中 |
| COVID_CONTACT->YES | 已选中 |
| COVID_CONTACT->NO | 未选中 |
| TRAVEL->YES | 未选中 |
| TRAVEL->NO | 已选中 |
项目详细信息
下载文件
下载适用于您的平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
amazon-textract-geofinder-0.0.8.tar.gz (22.6 kB 查看哈希值)
构建分发
关闭
amazon-textract-geofinder-0.0.8.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | a33d5c9797e8d1289843f6d7866e73e71bc53953caa83c7fdc26439b499c7b44 |
|
| MD5 | 71519ccb90b48d077ea6d6b5fefd0294 |
|
| BLAKE2b-256 | 17f7b40bacdff49aa7864dd88a814fbb4e319ff7c5ffb70b7a46797eeda1d066 |
关闭
amazon_textract_geofinder-0.0.8-py2.py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | ff7e364c31d803f8ff519abd3d8c36562721446867b062a9793931a3789e38f1 |
|
| MD5 | d1785f626706a7ae4ce2bcc118c197a9 |
|
| BLAKE2b-256 | 72473fc752ae7026d072019a8da41c860755c0bcddf5cc6cc538988afd7cc7b4 |