# 医疗票据自动识别:OCR 如何处理百种票据格式

一、”这是哪里的发票?”——医保审核员的困惑

2024 年 11 月,某市医保中心,审核员小李面对一张发票犯了难。

“这是哪里的发票?”

“XX 县人民医院。”

“怎么没有财政监制章?”

“县医院自己印的……”

“那这个能报销吗?”

小李拿不准,叫来科长。科长看了半天,说:”打电话问县医院财务科。”

一个电话打过去,对方说:”哦,我们医院从 2023 年开始用电子发票了,这个是系统自动生成的,没有监制章,但可以在财政部网站查验。”

虚惊一场。但这样的”虚惊”,每天都在上演。

中国有多少种医疗票据?

没人知道确切数字。国家财政部规定的标准票据只有几种(住院发票、门诊发票、电子发票),但实际执行中:

  • 31 个省份,每个省份的财政监制章版式不同
  • 3000+ 三级医院,大部分有自己的票据格式
  • 10000+ 二级医院,票据格式五花八门
  • 30000+ 基层医疗机构,票据更加不规范

这还不包括:

  • 历史票据(2010 年前的老版式)
  • 军队医院票据(特殊版式)
  • 民营医院票据(自制格式)
  • 药店购药小票(热敏纸、格式各异)

某省医保局统计:省内有效医疗票据版式超过 300 种,跨省票据超过 1000 种。

让审核员记住 1000 种票据格式,不可能。但让机器记住,可以。

二、技术方案:版式识别的”三层架构”

处理百种票据格式,核心是”版式识别”——先判断这是什么类型的票据,再用对应的模板识别。

#### 第一层:粗分类(5 大类)

“`

类别 1:财政监制住院发票

特征:红色财政监制章、固定版式、有发票代码/号码

识别方法:检测财政监制章(红色圆形/椭圆形)

类别 2:财政监制门诊发票

特征:与住院发票类似,但标题为”门诊收费票据”

识别方法:OCR 识别标题文字

类别 3:医院自制发票

特征:无财政监制章、医院 LOGO、自定义版式

识别方法:检测医院名称 + 发票关键字

类别 4:费用明细清单

特征:表格形式、多行项目、无金额合计(或有)

识别方法:表格检测 + 表头识别

类别 5:电子发票(PDF/OFD)

特征:电子版式文件、有电子签章、可查验

识别方法:文件格式检测 + 电子签章验证

“`

粗分类准确率目标:>98%

#### 第二层:细分类(按省份/医院)

粗分类后,进一步细分:

“`

住院发票

├── 北京市财政监制

├── 上海市财政监制

├── 广东省财政监制

├── …(31 省份)

└── 军队医院专用

门诊发票

├── 北京市财政监制

├── 上海市财政监制

└── …

“`

细分方法:

  • 检测财政监制章文字(”XX 省财政厅监制”)
  • 检测医院名称(与医院库匹配)
  • 检测发票代码前缀(按地区编码)

细分类准确率目标:>95%

#### 第三层:字段模板匹配

确定具体版式后,加载对应的字段模板:

“`json

{

“template_id”: “BJ_INPATIENT_2023”,

“template_name”: “北京市住院发票 2023 版”,

“fields”: [

{“name”: “invoice_code”, “type”: “text”, “bbox”: [450, 80, 580, 100]},

{“name”: “invoice_no”, “type”: “text”, “bbox”: [450, 105, 580, 125]},

{“name”: “date”, “type”: “date”, “bbox”: [350, 150, 480, 170]},

{“name”: “total_amount”, “type”: “currency”, “bbox”: [400, 400, 550, 425]},

]

}

“`

模板匹配优势:

  • 识别速度快(直接裁剪指定区域)
  • 准确率高(避免全文识别干扰)
  • 可维护(新增版式只需添加模板)

三、关键技术:如何应对”非标”票据

#### 问题 1:无模板票据怎么办?

即使有 1000 种模板,还是会遇到”从未见过”的票据。

解决方案:零样本字段提取

“`

步骤 1:使用通用 OCR 识别全文

步骤 2:使用 NLP 模型识别字段语义

  • “发票代码”、”发票号码”、”日期”、”金额”等关键词
  • 关键词附近的数字即为目标字段

步骤 3:输出结构化数据

步骤 4:人工校验后,加入模板库

“`

某省实测:零样本提取准确率 82%,足够支撑人工快速校验。

#### 问题 2:表格型费用清单如何处理?

费用清单是典型的”行数不定”表格,传统 OCR 模板无法处理。

解决方案:表格结构化提取

“`

步骤 1:表格检测(使用 TableNet 模型)

  • 输出:表格区域坐标

步骤 2:行列检测

  • 使用投影法检测行线、列线
  • 输出:单元格坐标矩阵

步骤 3:单元格识别

  • 对每个单元格执行 OCR
  • 输出:单元格文本

步骤 4:表头语义标注

  • 识别第一行(表头)
  • 标注每列类型:药品名称、规格、数量、单价、金额
  • 使用 NLP 模型(如 BERT)理解表头语义

步骤 5:数据提取

  • 按列类型提取数据
  • 输出结构化列表

“`

某省实测:表格提取准确率 94%,支持最多 50 行×15 列的表格。

#### 问题 3:手写体票据如何处理?

部分基层医疗机构仍使用手写票据。

解决方案:手写体专用模型

“`

模型架构:CRNN + Attention

训练数据:50 万 + 手写医疗票据样本

数据增强:

  • 随机旋转、倾斜
  • 添加噪声、模糊
  • 模拟不同笔迹

后处理:

  • 医疗术语词典校正
  • 数字格式校验
  • 上下文语义校验

“`

实测:手写体识别准确率 85%(打印体 98%)。

四、系统架构:支撑日均 10 万张票据识别

#### 硬件架构

“`

图像接入层

├── 窗口高拍仪(实时拍摄)

├── 扫描仪(批量扫描)

├── 手机 APP(拍照上传)

└── 邮件/传真(历史票据)

OCR 处理层

├── 版式分类集群(CPU,4 节点)

├── 模板匹配集群(CPU,8 节点)

├── 深度学习集群(GPU,4 卡 A10)

└── 表格处理集群(CPU+GPU 混合,4 节点)

数据存储层

├── 原始图像(对象存储,50TB)

├── OCR 结果(Elasticsearch,全文检索)

├── 模板库(MySQL,1000+ 模板)

└── 样本库(用于持续训练)

“`

#### 性能指标

某省医保平台实测:

  • 单张票据识别时间:P50=1.8 秒,P95=4.2 秒
  • 并发处理能力:200 张/秒
  • 日处理量:10 万 + 张
  • 服务可用性:99.95%

#### 持续学习机制

票据版式会不断更新,系统需要持续学习:

“`

新票据到来

版式分类

是否有匹配模板?

├→ 有:使用模板识别

└→ 无:零样本提取 + 人工校验

加入模板库

定期批量训练更新模型

“`

某省数据:每月新增模板 15-20 个,模型季度更新一次。

五、实战效果:识别率与效率双提升

#### 识别准确率

某省医保局测试数据(10000 张票据样本):

| 票据类型 | 样本数 | 识别准确率 |

|———-|——–|————|

| 财政监制住院发票 | 3500 | 98.7% |

| 财政监制门诊发票 | 2800 | 98.2% |

| 医院自制发票 | 1500 | 95.3% |

| 费用明细清单 | 1800 | 94.1% |

| 电子发票 | 400 | 99.5% |

| 综合 | 10000 | 97.2% |

#### 效率提升

| 环节 | 传统人工 | OCR 自动 | 提升 |

|——|———-|———-|——|

| 票据分类 | 30 秒/张 | 0.1 秒/张 | 300 倍 |

| 字段提取 | 2 分钟/张 | 2 秒/张 | 60 倍 |

| 数据录入 | 3 分钟/张 | 0 秒/张 | – |

| 合计 | 5.5 分钟/张 | 2.1 秒/张 | 157 倍 |

#### 业务价值

  • 审核员人力释放:从 120 人降至 35 人
  • 审核时效提升:从 3 天降至 4 小时
  • 差错率降低:从 4.5% 降至 0.9%
  • 参保人满意度:从 72% 提升至 93%

六、踩过的坑

坑 1:热敏纸褪色

部分药店小票使用热敏纸,时间久了字迹褪色。

解决:图像增强(对比度提升、边缘锐化);严重褪色的转人工。

坑 2:多页票据分页

费用清单多页时,扫描可能漏页或重复。

解决:检测页码连续性;金额合计校验。

坑 3:印章遮挡

医院公章、财务章遮挡关键字段。

解决:印章检测 + 去除(颜色分割);严重遮挡的转人工。

坑 4:电子发票重复报销

同一张电子发票可能被多次打印报销。

解决:发票代码 + 号码去重;与财政部查验平台对接。

七、结语

处理百种票据格式,听起来是个”脏活累活”——没有高深的算法,只有无尽的模板和细节。

但正是这些”脏活累活”,支撑着医保报销的顺畅运行。当审核员不再需要为”这是哪里的发票”而困惑,当参保人不再需要等待数天才能拿到报销款——技术的价值,就体现在这些平凡的细节里。

OCR 识别医疗票据,只是医保数字化的基础设施。但基础设施的价值,不在于炫技,而在于稳定、可靠、持续地提供服务。

让机器做机器擅长的事(识别、计算),让人做人擅长的事(判断、决策)——这才是人机协作的正确姿势。