使用LLM大模型进行结构化实体抽取
一.简介
1.传统的命名实体识别(NER)的流程
·收集与准备:收集文档。
·预处理:将不同格式文档转换为干净的文本。
·人工标注:人工标记数千个实体。
·训练:利用专用模型进行微调训练。
·验证:对数据进行测试。
即便投入了这么多时间和资源,准确率也很少能超过 90%。而当文档是图片或复杂的 PDF 时,情况就更棘手了,需要额外的光学字符识别(OCR)库,这又会引入新的潜在错误。
传统NER最大的问题在于过于死板:只要与训练中使用的模式有任何偏差,就会导致提取失败。一份布局不同的合同,甚至是较差的图像质量,都可能影响提取结果。
2.大模型(LLM)时代
LLM彻底改变了这一模式。以前需要数月工作才能完成的事情,现在只需用几行代码写一个提示词就能解决。目前多模态LLM能力使其能够直接处理 PDF、图像和文本,省去了复杂的预处理步骤。
现在你只需把文档发给LLM,加入清晰的指令,就能收到所需的结构化数据。
3.案例分析:从票据中提取数据
这里利用QwenVL从银行付款票据中提取信息(部分源码):
Model_PATH = '/opt/Qwen2-VL-7B-Instruct-GPTQ-Int4'
model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
Model_PATH,
torch_dtype=torch.bfloat16,
attn_implementation='sdpa',
device_map=DEVICE
)
processor = AutoProcessor.from_pretrained(
Model_PATH,
trust_remote_code=True,
use_fast=True
)
二.大语言模型(LLMs)在数据提取方面的优势
前所未有的灵活性:与传统模型不同,大语言模型能自然适应文档中的各种变化。布局不同?字体特殊?图像质量差?都不是问题。
无需本地光学字符识别(OCR):多模态能力无需再使用 PaddleOCR等库。图像处理直接在大语言模型内部进行,降低了应用程序的复杂性。
无需训练:无需收集数据集、进行标注或训练模型。相关知识已嵌入大语言模型中。
即时可扩展性:需要处理新型文档?只需调整提示词即可。无需重新训练或进行复杂调整。
默认支持多语言:大语言模型能自然处理不同语言的文档,而传统方法则需要特定的模型才能实现这一点。
这种方法可应用于多种类型的文档:
·合同:提取参与方、金额、日期和特定条款
·发票:识别产品、金额和税务数据
·简历:梳理工作经历、技能和教育背景
·表单:将调查和注册数据数字化
·医疗报告:提取诊断结果、药物和医疗程序信息
三.技术考量与局限性
1.成本方面
API 处理的成本因文档大小和使用频率而异。对于高容量应用,可考虑:
·对相似文档的结果进行缓存
·预处理以减小文件大小
·在合适情况下使用更小的模型
2.准确性方面
尽管准确率较高,但并非 100%。对于关键应用,应实施:
·多轮交叉验证
·对提取的数据进行合理性检查
·针对问题案例的备用系统
3.隐私方面
需考虑将敏感文档发送到外部 API 所涉及的问题。对于机密数据,可评估:
·本地部署解决方案
我们正经历着处理非结构化数据方式的根本性转变。大语言模型不仅简化了技术流程,还让此前仅为专业团队所掌握的技术变得普及化。
四.结论
利用大语言模型进行命名实体提取不仅仅是一次技术演进,更是我们处理信息方式的一场革命。以往需要专业团队、数月开发时间和大量资源才能完成的工作,现在任何开发者都能在几小时内实现。
这种方法的简便性带来了无限可能。企业中的每一份非结构化文档都存在自动化的机会,每一个手动录入流程都有优化的空间。
关注我,联系我:番石榴AI