如何高效使用Amazon Textract和LangChain提取文档信息

69 阅读2分钟

引言

在现代企业中,处理大量的文档信息是常见的需求。Amazon Textract是一项强大的机器学习服务,它可以自动从扫描的文档中提取文本、手写内容和数据。本文将介绍如何结合使用Amazon Textract和LangChain来有效处理文档,帮助企业节省时间和资源。

主要内容

为什么选择Amazon Textract?

Amazon Textract不仅仅是光学字符识别(OCR)。它能够自动识别、理解和提取表格和表单中的数据。这种特性非常适合需要从复杂文档中提取结构化信息的企业。

如何使用Amazon Textract与LangChain

我们将重点介绍如何使用LangChain中的AmazonTextractPDFLoader加载文档,以便在不同场景中提取数据。

单页文档处理

在本地文件或HTTP URL下处理单页文档时,可以使用Amazon Textract的同步API。

from langchain_community.document_loaders import AmazonTextractPDFLoader

# 加载本地文件
loader = AmazonTextractPDFLoader("example_data/alejandro_rosalez_sample-small.jpeg")
documents = loader.load()

# 检查输出
print(documents)

多页文档处理

对于多页文档,需将文件存储在S3并设置合适的区域。

import boto3
from langchain_community.document_loaders import AmazonTextractPDFLoader

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页

文档结果线性化

可以通过参数linearization_config设定文本输出的线性化方式。

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中与OpenAI结合使用

import os
from langchain.chains.question_answering import load_qa_chain
from langchain_openai import OpenAI

os.environ["OPENAI_API_KEY"] = "your-OpenAI-API-key"

chain = load_qa_chain(llm=OpenAI(), chain_type="map_reduce")
query = ["Who are the authors?"]

response = chain.run(input_documents=documents, question=query)
print(response)

常见问题和解决方案

网络限制

在某些地区,访问Amazon Textract时可能会遇到网络限制。为解决这一问题,开发者可以考虑使用API代理服务,以提高访问稳定性。

多页文档的区域配置

若处理多页文档时出现问题,检查AWS的区域设置是否正确非常重要。文档和调用服务需位于相同的区域。

总结和进一步学习资源

Amazon Textract与LangChain的组合可以大幅提高文档处理效率。读者可以通过以下资源进一步学习:

参考资料

  1. Amazon Textract 官方页面
  2. LangChain GitHub 仓库

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力! ---END---