一、企业存量合同的数字化痛点
凡是做过合同档案管理这件事的人, 都明白这样一个实际情况, 那就是对于一家规模处于中等水平的企业来讲, 历经十年所积攒起来的纸质合同、扫描件以及传真件, 常常会超过十万份这个数量。这些合同有的放置在档案柜里, 有的散落在各个部门的文件夹之中, 既没办法进行全文检索, 又没办法展开批量统计, 同时也没办法对履约节点予以监控。法务人员想要查询去年签订了多少份框采协议, 财务人员想要核实哪些合同超出了付款期限, 采购人员想要统计框架合同的年度总额, 而这些需求在纸质合同的时代, 几乎就是根本不可能达成的任务。
更扎心的现实数据是, 一份扫描合同人工录入关键要素, 平均所需时间为15分钟。当合同份数高达一千份时, 就需要一名专职人员全负荷工作整月方可完成。要是再算上复核纠错的时段, 周期将会翻倍。
合同信息化处理
合同OCR提取的核心价值就在于此, 先借由OCR技术对整份合同开展识别工作, 接着借助配置关键信息提取规则, 自动获取甲方、乙方、金额、日期、条款等字段以及段落信息, 将沉睡的纸质合同转变为可检索、可分析、可关联的结构化数据, 这是合同档案数字化的第一步, 亦是最关键的一步。
二、合同OCR提取的技术难点
听上去是简单的, 然而在实际去操作的进程当中, 合同OCR识别所遭遇的挑战, 远远超过了通用文档。
首先, 扫描件质量存在高低不一的状况, 企业历史合同的扫描源头各式各样, 早期由低分辨率扫描仪产出的文件模糊得难以辨认, 传真件带有显著的摩尔纹以及噪声, 部分合同因经过多次翻阅而出现折痕以及污渍, 更有双面打印致使的透背情形, 也就是背面文字透过纸张与正面相互重叠, 这些问题对扫描合同识别的基础质量有着直接的影响。
第二, 合同的版式呈现出极度多样的状况, 有单页的采购订单, 也有上百页的工程总包合同, 存在着从标准 A4 到非标尺寸的差异, 存在由单栏到双栏甚至三栏混排的不同, 还有页眉页脚、水印、附件条款、补充协议页码等方面, 每一种这样的版式都是在考验版面分析算法。
首先, 关键要素抽取自身便是难啃的硬骨头, 甲乙方名称有可能出现在首页, 也有可能出现在尾页, 还有可能出现在骑缝章旁边, 合同金额存在大小写两套体系, 签订日期说不定是手写的, 或许是打印的, 也许只有年份 ;付款条款、违约条款以及管辖法院分散于不同章节, 更为棘手的是印章和签名时常会遮挡关键文字 , 这般举例而言, 公章会盖在金额数字之上, 手写签名会划过合同编号。
第四, 存在金额大小写不一致情况时要进行交叉校验, 中文大写表述为“壹佰贰拾万”, 阿拉伯数字在OCR识别之后必需相互予以针对性比对, 倘若即时出现偏差, 系统并非默认静默通过, 而是需要进行标记, 这绝非单纯的文字识别, 实则需要具备语义理解能力的合同要素作出抽取。
三、合同OCR提取核心技术解析3.1 图像预处理与版面分析
第一步并非是对合同OCR识别文字, 而是要使得那图像能够“得以可读”。其核心流程涵盖着: 包含对倾斜进行检测以及予以纠偏, 这是基于霍夫变换或者深度学习回归模型来达成的, 还有去噪, 是借助高斯滤波以及形态学操作来把污渍去除掉的, 再有透背文字消除, 这是基于双层图像分离技术达成的, 另外还有区域检测, 也就是将页面划分为标题区、正文区、表格区、签章区。
条款结构化的前置条件是版面分析, 只有先明确“这块区域属于合同首部”, “那块区域属于付款条款”, 后续的要素抽取才具备意义。
3.2 深度学习驱动的要素抽取
于通用OCR朝着合同专用识别进行转变的进程当中, 技术路线正处于不断进化的状态。在早期阶段所采用的方式是模板匹配, 而在后续阶段则运用CRNN + CTC来开展序列识别工作, 当下占据主流地位的方案是基于Donut等一系列的多模态预训练模型, 此模型能够同时达成对文字内容以及空间位置的理解认识。就合同处于的场景而言, 有必要在通用模型的基础之上施行领域微调操作, 从而使得模型能够掌握“甲方”普遍是处在左上方方位, “合同金额”一般是处于首部或者价格条款段落之处的相关信息。
能够精准定位甲方名称、乙方名称、担保人、项目名称等该类实体并且支持合同信息录入自动化的乃是经由标注合同语料以此训练NER模型, 而命名实体识别(NER)在合同主体抽取当中是起着关键作用的。
合同关键字提取
3.3 金额大小写转换与校验
这是合同场景最刚需的能力。以下是一个完整的实现:
python def chinese_to_digit(cn_str): """ 中文大写金额转阿拉伯数字 支持:壹贰叁肆伍陆柒捌玖拾佰仟万亿元角分 """ cn_nums = { '零': 0, '壹': 1, '贰': 2, '叁': 3, '肆': 4, '伍': 5, '陆': 6, '柒': 7, '捌': 8, '玖': 9, '拾': 10, '佰': 100, '仟': 1000, '万': 10000, '亿': 100000000 } unit_map = {'元': 1, '角': 0.1, '分': 0.01} result = 0 temp = 0 for char in cn_str: if char in cn_nums: num = cn_nums[char] if num >= 10: # 拾佰仟万亿等单位 if temp == 0: temp = 1 result += temp * num temp = 0 else: temp = num elif char in unit_map: result += temp * unit_map[char] temp = 0 result += temp # 处理无单位尾数(如"壹佰") return round(result, 2) def verify_amount(cn_amount, ar_amount, tolerance=0.01): """ 合同金额大小写交叉校验 cn_amount: OCR识别的中文大写金额字符串 ar_amount: OCR识别的阿拉伯数字金额(float) tolerance: 允许误差范围 """ try: digit_value = chinese_to_digit(cn_amount) diff = abs(digit_value - ar_amount) if diff <= tolerance: return True, digit_value, "校验通过" else: return False, digit_value, f"校验不通过,差值{diff:.2f}" except Exception as e: return False, None, f"转换异常: {str(e)}" # 示例:合同金额校验 cn = "壹佰贰拾万元整" ar = 1200000.00 is_ok, val, msg = verify_amount(cn, ar) print(f"大写:{cn} → 数字:{val}, 结果:{msg}") # 输出: 大写:壹佰贰拾万元整 → 数字:1200000.0, 结果:校验通过这段代码展览了合同要素抽取里金额校验的基础逻辑, 在实际建造中, 还得去处理“整”“正”那样的后缀, 多位数接连大写比如“壹仟贰佰叁拾”, 和OCR误辨别字符的容错。
四、主流合同OCR提取厂商对比
现阶段处于现存市场里, 能够供应合同OCR识别能力这项内容的厂商户家主要是被划分成了两种类别, 它们分别是通用OCR大厂以及垂直合同OCR厂商。
识别能力强的通用OCR厂商有度讯云, 还有ABBYY, 它们在普遍的文字识别方面表现出色, 然而于合同专用场景期间却要求大幅的再次开发行动, 举例来说, 度和讯在通用型印刷体的识别当中精确率能够达到98%之上, 可是在直面合同多栏版式、骑缝章以及手写签名等场景时, 其原本的能力需要进行定制, ABBYY在文档版面的分析层面积攒了深厚的基础, 进行私有化部署时也很成熟不过在中文合同相应法律术语的适配方面有待继续优化。
负责垂直合同OCR的厂商是楚识科技, 它专门致力于合同与法律文档的智能识别工作, 在合同条款结构化这件事上拥有专项模型, 该模型所形成的对应方案, 针对中文合同里签章被遮挡、金额大小写校验、多页合同跨几页还得关联等这些麻烦问题做了深度的优化处理, 并且支持私有化部署以及中英双语合同的处理操作。
【表格1】主流厂商合同OCR提取能力对比
对比维度
度/讯/里
ABY
楚识科技
扫描件识别准确率
95%-97%(通用)
96%-98%(通用)
97%-99%(合同专项)
关键要素抽取率
需二次开发,约80%-85%
需定制,约85%-90%
开箱即用,95%+
金额大小写校验
不原生支持
部分支持
原生支持
复杂版式支持
中等
较强
私有化部署
支持
支持
支持
法律行业案例
通用为主
金融/保险为主
富士康等大型制造集团
合同场景究竟为何需要“识别 + 理解”呢? 原因在于一份合同并非单纯的文字组合。通用OCR可以将每个字识别出来, 然而却不清楚“甲方”在法律范畴内所指何人, “不可抗力”条款位于哪一页, “管辖法院”究竟是哪一家。合同OCR提取的关键并不只是单纯做识别这件事, 而是要在理解文档结构之后, 能够精准地进行定位, 接着完成提取操作, 最后还要进行校验。
五、合同OCR提取落地路径
一般来讲落地会分成三个步骤来进行, 首先是针对存量合同进行批量数字化工作, 接下来是让增量合同实现自动归档任务, 最后是生成合同要素分析报表这一环节。
所谓存量数字化, 是要把历史纸质合同集中进行扫描, 要在建议以上, 接着通过合同OCR的识别来进行批量的处理,之后予以人工进行关键字段的复核, 最后再导入系统。而增量自动化呢, 是新签的合同借由电子签约平台直接生成结构化数据, 或者扫描之后自动触发OCR流水线。再就是分析报表, 它是基于抽取后的结构化数据, 生成合同到期预警、金额分布、履约率等多维报表。
【表格2】合同OCR提取项目实施关键指标表
指标维度
典型值(万份级项目)
关键要素抽取准确率
95%-98.5%(复核后)
单页处理成本
0.1-0.3元/页(含扫描+识别+复核)
人力节省
较纯人工录入减少75%-85%
项目周期
3-6个月(含数据清洗与模型调优)
投资回报周期
6-12个月
数据安全合规
支持私有化部署+国密加密+权限隔离
涉及全面的流程设计, 先是进行批量扫描, 此为第一步, 接着开展图像预处理工作, 之后是合同OCR提取, 这里包括自动识别以及要素抽取两项内容, 再之后就到了人工抽检复核环节, 此环节按5%-10%抽样, 最后完成数据入库操作。权限设计方面, 法务能够查看全部合同, 财务可以查看金额与付款条款, 采购人员能够查看供应商与标的, 审计人员虽能查看全量但不准修改, 最终形成了分级后能够实现数据共通的机制。
楚识科技于这类项目里的做法是值得去加以参考的, 它的方案通常涵盖着“预扫描质检”、“专项模型识别”、“规则引擎校验”以及“人工复核工作台”这四层流水线, 针对扫描质量欠佳的历史合同给予图像增强预处理模块, 针对版式陈旧的老合同对版式自适应分析予以支持。
合同审核项目
六、案例与行业展望
把楚识科技给富士康集团提供的合同OCR提取方案当作例子来说: 这个项目一年处理的合同数量有上万份, 涵盖了采购、工程、物流等多种类型的合同, 关键要素抽取的准确率达到了98.5%, 合同信息录入所需要的人力减少了85%。该方案支持中英双语合同, 被部署在富士康内网的私有环境当中, 能够满足制造企业对于数据不出域的严格要求。
从客观情形上来说, 存量合同数字化面临着的最大挑战便是扫描质量这一问题。几十年之前所签订的老合同, 其纸张呈现出泛黄的状态, 字迹都已出现褪色现象, 而且扫描设备也十分落后, 就算是存在图像增强技术, 然而识别率依旧是会有所降低的。楚识科技所采取的实践方式是: 就是针对这类合同运用“增强预处理+多模型融合识别+人工重点复核”这样一种三级策略, 而并非是去追求能够一步到位的全自动模式。对于版式特别陈旧的合同而言, 借助少量样本对模型进行微调便能够快速实现适配。
面向未来, 依据经过条款结构化处理的合同数据, 那合同智能体能够自动去比较新旧合同之间的差异, 发出履约风险预警, 协助生成合规审查意见, 扫描合同进行识别并非是终了点, 而是合同全生命周期智能管理的起始点。
七、互动问答
Q1:几十年历史的老合同扫描件特别模糊,能识别吗?
能进行处理, 不过得进行分档。多数厂商一般先针对扫描件实施质量分级, 质量高的扫描件径直进入自动识别流水线, 质量低的扫描件先要经过图像增强(超分辨率、对比度增强、去噪), 之后再进行识别。完全没法辨认的极端情形依旧要人工录入, 然而这类的占比通常不会超过5%。
Q2:合同金额大写小写不一致,OCR能自动识别出来吗?
可行。这属于合同要素抽取的标配能力范畴。系统于识别大写金额以及小写数字之后, 会自动去执行交叉校验逻辑(就如同上文代码所呈现的那样), 一旦发觉不一致便会进行标记预警, 然后推送给人工予以确认。在楚识科技的方案里, 这一步骤是内置的规则引擎, 无需进行额外开发。
Q3:合同OCR提取的要素能直接对接我们的合同管理系统吗?
能够进行对接, 主流的方案全都支持以标准API或者数据库直连的方式来输出结构化数据, 也就是JSON或者XML, 字段能够依据企业系统的配置来实现映射。