ExtractThinker:具有LLM资格的AI文档智能

2024年05月21日 由 alex 发表 316 0

1


简介

自 2021 年 10 月(OpenAI Codex)以来,我一直在使用 LLM,并立即开始了提取工作。我试图在 .NET 中构建一个与本文类似的解决方案,但创建一个不可知的解决方案并不容易,尤其是在无法使用 Python 中可用的有用工具的情况下。


你已经有了几种归档工具,如 AWS Textract 或 Azure AI Document Intelligence,只需编写一些代码,就能完成归档工作。它们提供了一系列模板和培训生态系统,因此你可以添加你的文档类型,值得一提的是,它们下面还有转换器模型。最大的问题通常是供应商锁定和开发人员训练模型的成本。


让我们比较一下使用 Azure Document Intelligence 和使用 LLMs 以及 Azure Document Intelligence 的解决方案的成本。我将使用 Azure 提供的定价表。


2


Azure 为你提供了一种基本的 "读取 "文档提取类型,提取时不带字段或业务逻辑。但它足以获得段落、复选框和表格等结构,这足以与 GPT 3.5 配合使用。其他云服务提供商也提供价格相近的类似服务,因此计算方法应该是一样的。


此外,这些工具不是面向普通领域模型的,因此你需要进行大量的映射,类似于将 SQL 结果转换为 OOP 语言中的类。因此,考虑这个项目的最佳方式就是 "ORM,但用于文档提取"。下图很好地表达了这一想法:


3


在传统的 ORM 中,数据库驱动程序负责从数据库表到类的映射。同样,ExtractThinker 使用 OCR 和 LLM 作为 "驱动程序",将文档字段映射到类属性。这种 ORM 式的交互简化了流程,将非结构化文档数据转化为结构化数据。


功能

就项目目的和规模而言,你应该将它与 LiteLLM 和 instructor 进行比较。它们解决的都是特定的用例,如创建多个 LLM 的负载平衡器,或确保以 pydantic 的方式解析输出。目前,本项目在很大程度上借鉴并依赖于它们。下面的图片展示了思考这个项目的好方法。


4


该项目将涉足 "文档智能 "领域,为 Textract 或 Azure DI 提供映射器,与低成本的 LLM 搭配使用。此外,还可以将反混淆和 ToT 等更先进的工具添加到管道中,以提高结果的质量。


代码示例


from extract_thinker import DocumentLoaderTesseract, Extractor, Contract

# contract definition. Based on instructor/pydantic
class InvoiceContract(Contract):
    invoice_number: str
    invoice_date: str
path = "some\path"
# creation of the extractor
extractor = Extractor()
# load documentloader. This case is using tessaract
extractor.load_document_loader(
    DocumentLoaderTesseract(tesseract_path)
)
# load the LLM model. Uses LiteLLM for the heavy lifting
extractor.load_llm("claude-3-haiku-20240307")
# extract the data with the contract above
result = extractor.extract(path, InvoiceContract)

print("Invoice Number: ", result.invoice_number)
print("Invoice Date: ", result.invoice_date)


为什么不使用 Langchain?

LangChain 是一个通用框架,设计用于各种使用案例,而 extract_thinker 则专门针对智能文档处理 (IDP)。这就是区别所在,Langchain 在提取部分受到了限制,尽管他们现在正将其作为产品的核心部分。


从这个项目中可以期待的是一组基于你的用例或相当接近的已完成并经过测试的模板。这个原因本身就证明了这个项目存在的合理性,这也是你应该看到它的方式:使用 LLM 的文档智能工具的集合。


结论

ExtractThinker 是一个旨在将文档智能引入 LLM 的库。它基于之前的一个.NET 项目,并迁移到 Python 上实现。它采用 ORM 风格的文档提取方法,将 OCR 与 LLM 相结合,以提高性能和不可知的可用性。


随着项目的发展,预计它将根据不同的使用案例提供一系列不同的已完成和测试的模板,进一步巩固其作为使用 LLM 进行文档智能的首选资源的地位。

文章来源:https://medium.com/towards-artificial-intelligence/extractthinker-ai-document-intelligence-with-llms-72cbce1890ef
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
写评论取消
回复取消