技术背景介绍
Amazon Textract是一项机器学习服务,能够自动从扫描文档中提取文本、手写和数据。这项服务不仅仅是简单的光学字符识别(OCR),它还能识别、理解并提取表格和表单中的数据。许多公司依赖手动方式或简单的OCR软件来处理PDF、图像、表单等文档,这些方法常需要更新和人为干预。Amazon Textract通过机器学习技术解决了这些繁琐和昂贵的过程,能自动、精确地处理和提取文档中的信息。
核心原理解析
Textract能够处理各种类型和格式的文档,包括PDF、TIFF、PNG和JPEG。它支持单页和多页文档,然而多页文档需要存储在S3中以进行处理。此外,Textract的内置ML模型无需复杂的配置,就能识别结构化和非结构化数据。
代码实现演示
下面是一些使用Amazon Textract结合LangChain作为DocumentLoader的具体示例:
示例1: 本地文件处理
from langchain_community.document_loaders import AmazonTextractPDFLoader
# 加载本地JPEG文件进行处理
loader = AmazonTextractPDFLoader("example_data/alejandro_rosalez_sample-small.jpeg")
documents = loader.load()
# 输出结果
print(documents)
在这个示例中,我们处理了本地的一个JPEG文件。注意,使用本地文件或HTTP URLs时,Textract仅支持单页文档。
示例2: 通过HTTPS端点加载文件
from langchain_community.document_loaders import AmazonTextractPDFLoader
# 从HTTPS端点加载文档
loader = AmazonTextractPDFLoader(
"https://amazon-textract-public-content.s3.us-east-2.amazonaws.com/langchain/alejandro_rosalez_sample_1.jpg"
)
documents = loader.load()
# 打印加载文档的内容
print(documents)
此示例展示了如何从HTTPS端点加载单页文档。对于多页文档,必须存储在S3中。
示例3: 处理多页文档
import boto3
from langchain_community.document_loaders import AmazonTextractPDFLoader
# 设置Textract client并加载多页文档
textract_client = boto3.client("textract", region_name="us-east-2")
file_path = "s3://amazon-textract-public-content/langchain/layout-parser-paper.pdf"
loader = AmazonTextractPDFLoader(file_path, client=textract_client)
documents = loader.load()
# 获取并打印页面数量
print(len(documents)) # 期望的页面数是16页
在此示例中,使用S3存储的多页PDF文件,并调用位于"us-east-2"区域的Textract服务。
示例4: 文本线性化配置
from langchain_community.document_loaders import AmazonTextractPDFLoader
from textractor.data.text_linearization_config import TextLinearizationConfig
# 使用文本线性化配置
loader = AmazonTextractPDFLoader(
"s3://amazon-textract-public-content/langchain/layout-parser-paper.pdf",
linearization_config=TextLinearizationConfig(
hide_header_layout=True,
hide_footer_layout=True,
hide_figure_layout=True,
),
)
documents = loader.load()
此示例展示了如何配置文本线性化参数以调整输出。
使用LangChain进行问题回答
import os
from langchain.chains.question_answering import load_qa_chain
from langchain_openai import OpenAI
# 环境变量中设置OpenAI API Key
os.environ["OPENAI_API_KEY"] = "your-OpenAI-API-key"
# 加载QA链并执行查询
chain = load_qa_chain(llm=OpenAI(), chain_type="map_reduce")
query = ["Who are the authors?"]
result = chain.run(input_documents=documents, question=query)
# 打印查询结果
print(result)
结合使用LangChain的QA链功能,以MAP-REDUCE的方式实现对文档内容的问答操作。
应用场景分析
Amazon Textract非常适用于需要从纸质或电子文档中提取大量数据的领域,例如财务报表处理、医疗表单数据录入、法律文档审阅等。它支持多种格式和复杂的模版文档处理。
实践建议
- 存储策略:将多页文档存储在S3中,以便和Textract更好地集成。
- 区域选择:确保Textract客户端和文档所在S3区域一致,以优化性能。
- 线性化配置:根据具体需求调整文本线性化配置,以获得最佳的输出格式。
如果遇到问题欢迎在评论区交流。
—END—