文章介绍了一种实现合同关键信息提取的简单且高效的方法,主要面向财审同事使用的Mac电脑环境。文章提到了两种从PDF中提取关键信息的方式,并重点介绍了方式2:先将PDF通过OCR转换为文本文件,再使用AI大模型从文本中提取关键信息。文章还提供了使用Ollama模型和chatgpt写代码的例子,并说明了如何批量处理合同信息和输出结果为Excel文件。
方式1是使用视觉模型识别,适用于单据类如发票、车票等;方式2是先OCR识别为文本文件,再使用大模型识别关键信息,适用于几乎全是文本类的文书如合同,速度更快。
示例中展示了如何定义一个模型来存储合同信息,以及如何准备合同文本并使用Ollama模型进行处理,最后解析返回的JSON数据。
只需要写个循环读取指定文件夹的所有txt文件,批量调用函数,最后将信息输出为Excel即可。使用的AI模型占用显存较小,可以适用于大多数环境。
之前写过好几篇合同关键信息提取的方法,今天给大家介绍一个实现最简单,效率也不错的方法。
财审同事需要对被审计单位销售合同、采购合同、工程承包合同、工程分包合同的关键信息进行提取。
一般来说,他们会把这项工作交给效率工具-“实习生”来完成。
但是架不住量大,实习生用起来也不划算。
之前我们介绍过使用 paddlepaddle 和 knowledge-table 来实现。
其中 paddlepaddle 对于有 N 卡的效率高。
但我现在使用的 Mac 电脑,我发现使用 ollama 来实现是效率和部署最方便的。
前不久, ollama 提供了结构化输出的示例,要实现这个需求就更简单了。
对于扫描件的 PDF ,有两个方式可以实现:
-
直接使用 ollama 支持的视觉模型识别,并输出为结构化数据。
-
先将 PDF OCR 识别为 txt 文本文件,再使用 ollama 大模型识别出关键信息输出为结构化数据。
对于方式1来说,比较适用单据类,如发票、车票、报关单、凭证等。优势是效果好,缺点是速度慢。
对于方式2来说,比较适用几乎全是文本类的文书,如合同等。优势是速度快。
因此,本篇我们介绍方式2.
从 PDF OCR 识别为文本文件,有很多软件可以实现。不过,在 Mac 电脑上我直到今天才找到最好用的。
这里暂且不赘述。
假设我们已经将 PDF 转成了 txt 文件,我们只需要从文本中利用 AI 大模型提取出关键信息。
我们根据 ollama 官网给的示例,找 chatgpt 给我们写代码:
它直接给我可用代码:
from ollama import chat
from pydantic import BaseModel
from typing import Optional
# 定义一个模型来存储合同信息
class Contract(BaseModel):
contract_number: str # 销售合同或销售订单编号
sign_date: str # 合同签订日期
contract_term: str # 合同期限
contract_type: str # 合同类型
contract_subject: str # 合同标的
payment_method: str # 付款方式
settlement_basis: str # 结算依据
quantity_tons: float # 数量(吨)