FDE W2D2 学习手册 · 医疗 OCR Tool 与 Document AI
W2 Week2 Day2 · A+B 级(必须掌握 + 设计能力)· 5h · 学完能讲透"报销发票/病历如何从图片变成可校验的结构化字段"
本日定位:W2D1 讲了"工具怎么调",今天落地一类最典型的工具——医疗 OCR / Document AI。它是保险理赔自动化的入口:把用户拍的发票、病历、诊断证明变成结构化数据。
学完能回答:① OCR→字段抽取→置信度→人工复核 的完整链路;② 字符准确率 / 字段 P-R-F1 / 人工修改率 怎么算、为什么需要低置信度复核。
使用方法:通读原理 → 重点看「面试话术」「易错点」→ 做自测清单 → 配合《FDE-W2D2-评测题.md》。选中不熟的词可标注(左下★重要 / 右下📌待查)。
一、Document AI 与 OCR 在保险场景的定位
医疗保险理赔里,用户提交的材料绝大多数是非结构化图片/PDF:增值税发票、门诊病历、费用清单、诊断证明、特药处方。OCR / Document AI 工具的作用,就是把这些材料变成下游(规则引擎、数据库、LLM)能消费的结构化字段。
典型链路:用户上传发票图片 → OCR 识别文字 + 坐标 → 字段抽取(金额/项目/医院)→ 置信度评估 → 低置信度转人工 → 高置信度自动入流程。
OCR/Document AI 是理赔自动化的"入口工具":把图片发票、病历变成结构化字段。它不直接做决策,只是把"看不懂的图片"变成"下游能用的数据"。
在 FDE 视角下,OCR 工具是一个被 Agent 调用的 Tool(见 W2D1):模型说"识别这张发票",工具返回结构化字段。它的质量直接决定后续理赔算得准不准—— garbage in, garbage out。
二、OCR 文本识别原理与流程
2.1 基本流程
图像预处理(去噪/二值化/纠偏)→ 版面分析(检测文本块/行)→ 文本识别(CNN+CTC 或 Transformer 解码为字符)→ 后处理(词典校正/格式规整)
- 文本检测(Detection):定位图中哪里有文字(文本框 / 像素级掩码)。
- 文本识别(Recognition):把每个文本框的像素变成字符序列。
- 版面分析(Layout):理解标题、表格、段落的位置关系,辅助字段对齐。
2.2 开源方案
PaddleOCR(百度)是中文场景最常用、效果最好的开源 OCR 之一,支持中英文、表格识别、PP-Structure 版面分析。官方文档:paddlepaddle.github.io/paddleocr,代码:github.com/PaddlePaddle/PaddleOCR。
OCR = 检测(在哪有字)+ 识别(字是什么)+ 版面分析(字的关系)。中文医疗票据首选 PaddleOCR,它有专门的表格和版面分析能力。
① OCR 不是"100% 准确",尤其发票章、浅色小字、折叠阴影容易错。② 别把 OCR 当"全文搜索"用——要的是字段级抽取,不是一堆散文本。③ 扫描件 dpi 太低会大幅下降准确率,预处理(纠偏/放大)很关键。
三、坐标返回与版面分析
成熟的 OCR 不只返回文字,还返回每个词/字段的包围框坐标(通常是四点或两点 bbox,相对图片宽高比 0~1 或绝对像素)。
{
"text": "价税合计 ¥1,280.00",
"bbox": [[120, 330], [420, 332], [420, 358], [120, 356]], // 四点
"score": 0.97,
"line_id": 3
}
3.1 坐标的用途
- 字段定位:知道"金额"在图的哪个位置,便于高亮、复核。
- 版面还原:用坐标把零散词拼回"行/列/表格",支撑字段抽取。
- 校验:相邻字段的相对位置("金额"在"价税合计"右侧)可辅助判断是否抽错。
坐标是连接"识别结果"和"原图"的桥梁。没有坐标,你无法做截图高亮,也无法在人工复核时让审核员一眼看到模型抽的是哪块。
OCR 返回文字时一并返回 bbox 坐标。坐标用于字段定位、版面还原和人工复核高亮——是"让机器结果可被人类验证"的关键。
四、字段结构化抽取
光有 OCR 文本还不够,要从中抽出业务字段:发票代码、金额、医院名称、项目明细、开票日期等。
4.1 抽取方式
| 方式 | 做法 | 优劣 |
| 规则/正则 | 按"价税合计:xxx"模板匹配 | 快、可控,但模板一变就崩 |
| 键值对模型(KIE) | 专门训练"字段-值"定位模型 | 对固定版式发票准,泛化一般 |
| LLM 多模态 | 把图片+prompt 给多模态模型直接抽 JSON | 泛化好、省规则,成本较高 |
LangChain 提供多模态文档处理(python.langchain.com/docs/how_to/multimodal_prompts),可把图片直接喂给视觉模型抽取结构化字段,适合版式多变的病历/处方。
4.2 统一输出
{
"invoice_code": "044001800211",
"amount": 1280.00,
"hospital": "XX市第一人民医院",
"items": [{"name": "奥希替尼", "qty": 1, "fee": 1280.00}],
"date": "2026-03-12",
"confidence": {"amount": 0.98, "hospital": 0.91}
}
字段抽取是把 OCR 文本变成业务字段(金额/医院/项目),可用正则、KIE 模型或多模态 LLM。输出要统一成结构化对象,每个字段带独立置信度。
① 金额字段最关键也最易错,务必单独高置信校验(如"价税合计"和"金额大写"交叉验证)。② 多模态 LLM 抽字段方便,但可能"编造"图上没有的值,必须配坐标/原文回溯。③ 单位、币种、小数点要归一化("1,280.00"→1280.00)。
五、OCR 置信度与字段置信度
5.1 两层置信度
- 字符级置信度:OCR 对每个识别出的字符给一个 0~1 概率(整体是平均或最小)。
- 字段级置信度:对"抽出的某个字段"给的置信度,可能综合字符分 + 版面位置 + 语义合理性。
字段置信度 = f(字符识别分, 版面位置分, 语义校验分) ∈ [0, 1]
5.2 为什么字段级更重要
一张发票整体识别率 99%,但"金额"那个字恰好模糊,字段置信度就低——而金额恰恰是理赔最敏感的字段。所以按字段而非整图评估置信度更有业务意义。
置信度分两层:字符级(每个字的概率)和字段级(每个业务字段的可信度)。理赔里金额字段的置信度比整图平均更有意义,要按字段评估。
字段置信度是"人机协同"的开关:高置信自动过,低置信转人工。它能把有限的审核人力集中在真正不确定的地方,这是 OCR 系统能上生产的核心设计。
六、低置信度人工复核
6.1 复核策略
| 字段置信度 | 处理 |
| ≥ 0.95 | 自动通过,进入流程 |
| 0.80 ~ 0.95 | 自动通过,但打标"需关注",留痕 |
| < 0.80 | 转人工复核(高亮该字段原图位置) |
6.2 人工复核体验设计
- 把低置信字段在原图上的 bbox 高亮,审核员一眼看到"机器抽的是这坨"。
- 预填 OCR 结果,审核员只需确认/修改,降低操作成本。
- 记录"人工修改了哪些字段",反哺评测(人工修改率,见 s10)。
置信度是自动/人工的分流阀:高置信自动过,低置信(如<0.8)转人工并高亮原图位置。这样把审核员精力留给真正不确定的字段。
低置信度复核是"准确率 vs 成本"的平衡点。完全自动准确率不够,全人工成本太高;按字段置信度分流,是生产系统的标配。
① 阈值不是固定的,要按字段敏感度调(金额阈值应比"医院名"高)。② 转人工后必须保留原图证据,否则争议时无法溯源。③ 别因为"整图置信度高"就跳过单字段低置信——局部错更危险。
七、页面原图与字段坐标关联(截图高亮)
7.1 关联的价值
把"结构化字段"和"原图 bbox"绑定,能做到:
- 可追溯:点击某字段,跳到原图对应区域。
- 可复核:人工审核时高亮展示机器抽的是哪块。
- 可解释:向用户/监管证明"这笔金额是从发票这行来的"。
7.2 实现方式
# 用坐标从原图裁剪出字段截图
from PIL import Image
im = Image.open("invoice.jpg")
x1,y1,x2,y2 = norm_to_px(bbox, im.size) # 归一化坐标转像素
crop = im.crop((x1,y1,x2,y2))
crop.save(f"field_{field_name}.png") # 用于前端高亮/复核展示
把字段和它的 bbox 绑定,就能"点字段看原图、低置信高亮"。这是 OCR 结果可解释、可复核、可溯源的基础,也是监管看重的。
坐标关联是"让 AI 结果可被信任"的工程细节。没有它,OCR 抽错你也发现不了;有了它,错误被高亮、被人类一眼抓出。
八、评测指标①:字符准确率(Character Accuracy)
8.1 定义
字符准确率 = (识别正确的字符数) / (标准答案字符总数) × 100%
也可用编辑距离(Levenshtein)衡量:准确率 = 1 - 编辑距离 / 答案长度。字符准确率是 OCR 最基础的指标,衡量"字认得对不对"。
8.2 局限
- 只看字符,不看字段语义——"1,280"认成"1,282"字符错 1 个,但金额就错了。
- 对空格、标点敏感,需约定归一化规则(是否忽略空格)。
字符准确率 = 认对的字符数 / 总字符数,是最基础的 OCR 指标,但只看"字对不对",不关心"字段对不对",所以还要看字段级指标。
九、评测指标②:字段 Precision / Recall / F1
9.1 为什么需要字段级
业务关心的是"字段抽没抽对",不是单字。把每个字段当作一个"抽取目标",用信息抽取(IE)的标准指标:
Precision = 抽对的字段 / 抽出的字段总数
Recall = 抽对的字段 / 标准答案字段总数
F1 = 2·P·R / (P + R)
9.2 举例(发票字段抽取)
| 字段 | 标准答案 | 模型抽出 | 判定 |
| invoice_code | 044001800211 | 044001800211 | TP(对) |
| amount | 1280.00 | 1280.00 | TP |
| hospital | 市一医院 | 市第一医院 | FP(错抽) |
| date | 2026-03-12 | (漏抽) | FN(漏抽) |
本例 Precision = 2/3,Recall = 2/3,F1 ≈ 0.67。注意字段"值要完全匹配"才算对,金额差一分都算错。
字段级 P/R/F1 把每个字段当抽取目标:P=抽对的/抽出的,R=抽对的/该抽的,F1 是调和平均。比字符准确率更贴近业务——关心"字段对不对"。
字段 F1 是评价 OCR/Document AI 工具可用性的核心。生产上线要有"字段 F1 达标线"(如关键字段 ≥0.95),否则下游规则引擎拿到的是脏数据。
① 字段匹配是完全匹配还是模糊匹配要先约定(金额差 0.01 算错吗?)。② 别只看 F1 平均,要分字段看——金额 F1 比医院名 F1 重要得多。③ Recall 低说明漏抽(危险,金额漏了直接少赔),Precision 低说明抽错(多赔/欺诈风险)。
十、评测指标③:人工修改率(Human Correction Rate)
10.1 定义
人工修改率 = (被人工修改/补录的字段数) / (总字段数) × 100%
这是生产真实数据上最诚实的指标:OCR 自动抽的字段,有多少被人工改过或补过。它综合反映了准确率和置信度阈值的效果。
10.2 和置信度的关系
- 阈值设太高 → 太多字段转人工 → 修改率高、成本高。
- 阈值设太低 → 错误字段自动过 → 修改率低但错误流入下游,更危险。
- 理想:低修改率 + 低漏错率,靠"高置信自动过 + 真低置信才转人工"。
人工修改率 = 被人工改过的字段 / 总字段,是生产上最诚实的指标。它和置信度阈值博弈:阈值高改得多成本高,阈值低错得流入下游更危险。
人工修改率直接对应运营成本。FDE 要能说清:不是"修改率越低越好",而是"在可接受的错误率下,把修改率压到最低"——这是产品化思维。
十一、复杂场景设计(跨页 / 复杂表格 / 手写体)
这部分本次只做设计,不要求跑通,但要能讲清思路和难点。
| 场景 | 难点 | 设计思路 |
| 跨页字段 | 一张发票/病历跨多页,字段被截断 | 按文档 ID 聚合多页结果;跨页拼接逻辑(如"合计"在末页);页间坐标映射 |
| 复杂表格 | 费用清单多行多列、合并单元格 | 用表格识别(PaddleOCR PP-Structure / 多模态大模型);行列关系建模;支持单元格级坐标 |
| 手写体 | 医生手写处方识别率骤降 | 手写专用模型/采样增强;置信度普遍偏低→默认转人工;关键字段(药名/剂量)强制复核 |
跨页/复杂表格/手写体是 OCR 三大难题,本次只设计不跑通:跨页要聚合多页+坐标映射,复杂表格用表格识别模型,手写体置信度低应默认转人工。
复杂场景的设计原则是"识别不了的就诚实地转人工",而不是硬撑自动。FDE 评估的是你"知道边界在哪、怎么兜底",不是炫技全自动化。
十二、资源与工具
- PaddleOCR 官方文档:paddlepaddle.github.io/paddleocr —— 中文 OCR、表格、版面分析。
- PaddleOCR GitHub:github.com/PaddlePaddle/PaddleOCR —— 可直接部署的推理代码与模型。
- LangChain 多模态文档:python.langchain.com/docs/how_to/multimodal_prompts —— 用多模态模型直接抽图片字段。
- 医疗票据模板库:各地税务局发票版式、医保结算单版式(内部沉淀)。
实战建议:先用 PaddleOCR 跑通"标准增值税电子发票"这类固定版式材料,字段抽取用正则+坐标结合;版式多变的病历/处方用多模态 LLM 抽,低置信转人工。
资源:PaddleOCR(中文 OCR 首选,含表格/版面)、LangChain 多模态(版式多变材料抽字段)。先攻固定版式发票,再啃复杂病历。
十三、面试达标线①:讲清 OCR→抽取→置信度→复核 完整链路
图片上传 → 预处理(纠偏/放大) → OCR 识别文字+坐标 → 字段结构化抽取(正则/KIE/多模态) → 计算字段置信度 → 高置信自动过 / 低置信转人工(高亮原图bbox) → 人工确认或修改 → 结构化字段入下游流程
- OCR:检测+识别+版面分析,输出文字与 bbox 坐标。
- 字段抽取:从文本/图片抽业务字段(金额/医院/项目),统一结构化输出。
- 置信度:对每个字段算字段级置信度(综合字符分+版面+语义)。
- 分流:高置信自动过;低置信(按字段敏感度设阈值)转人工复核,并高亮原图位置。
- 闭环:人工修改记录反哺评测(人工修改率),与原图坐标绑定保证可追溯。
一句话:图片→OCR出字和坐标→抽字段→算字段置信度→高置信自动过、低置信转人工并高亮原图→人工改完入流程。关键是字段级置信度做自动/人工分流阀。
十四、面试达标线②:OCR 评测指标怎么算、为何要低置信复核
| 指标 | 公式 | 衡量什么 |
| 字符准确率 | 认对字符数 / 总字符数 | 字认得对不对(基础) |
| 字段 Precision | 抽对字段 / 抽出字段 | 抽出的准不准(少抽错) |
| 字段 Recall | 抽对字段 / 应抽字段 | 漏没漏(金额漏抽最危险) |
| 字段 F1 | 2PR/(P+R) | 综合可用性(分字段看) |
| 人工修改率 | 被改字段 / 总字段 | 真实运营成本 |
- 为什么需要低置信度复核:OCR 不是 100% 准,尤其发票章、浅字、折叠阴影;金额等关键字段错一个字就赔错钱。字段级置信度让"不确定的才转人工",把有限审核人力用在刀刃上,平衡准确率与成本。
- 指标间关系:字符准确率看"字",字段 F1 看"业务",人工修改率看"真实成本"。三者都要看,且字段 F1 要分字段评估(金额权重最高)。
字符准确率看字对不对,字段P/R/F1看业务抽得准不准(要分字段、金额最重),人工修改率看真实成本。低置信复核是因为OCR会错、且错在金额上代价巨大,按字段置信度分流能省成本又控风险。
十五、W2D2 自测清单
- 能说出 OCR 三段流程:检测 → 识别 → 版面分析,并知道 PaddleOCR 是中文首选。
- 能解释 bbox 坐标是干什么用的(定位/版面还原/高亮复核)。
- 能区分三种字段抽取方式:正则、KIE 模型、多模态 LLM,说出各自优劣。
- 能说清字符级 vs 字段级置信度,为什么字段级对理赔更重要。
- 能讲清低置信度人工复核的阈值策略和体验设计(高亮原图)。
- 能解释坐标关联如何支撑可追溯、可复核、可解释。
- 能写出字符准确率公式,并说出它的局限。
- 能写出字段 P/R/F1 公式,并用发票例子算一遍。
- 能解释人工修改率的定义,以及它和置信度阈值的博弈关系。
- 能讲清跨页/复杂表格/手写体三大复杂场景的设计思路(只设计不跑通)。
- 能讲清达标线①(OCR→抽取→置信度→复核完整链路)。
- 能讲清达标线②(四类评测指标 + 为何需要低置信复核)。
十六、高频面试题速记卡
Q:OCR 能 100% 准确吗?为什么还要人工复核?
不能,发票章/浅字/阴影易错。金额错一个字就赔错钱,所以用字段置信度把不确定的转人工,平衡准确率与成本。
Q:字符准确率和字段 F1 有什么区别?
字符准确率看"字认对没",字段 F1 看"业务字段抽对没"。理赔关心后者,且要分字段评估(金额最重)。
Q:什么是字段级置信度?
对每个抽出的业务字段(如金额)单独算可信度,综合字符分+版面+语义。比整图平均分更有业务意义。
Q:人工修改率越低越好吗?
不是。阈值太低错误会流入下游更危险;要在可接受错误率下把修改率压最低,是成本与风险的平衡。
Q:bbox 坐标有什么用?
定位字段在原图位置,支撑版面还原、人工复核高亮、可追溯可解释。是连接识别结果和原图的桥梁。
Q:字段 F1 的 Precision 和 Recall 哪个低更危险?
Recall 低更危险——代表漏抽(金额没抽到直接少赔);Precision 低是抽错(多赔/欺诈风险)。
Q:手写体处方怎么处理?
本次只设计:手写识别率骤降,默认转人工,药名/剂量等关键字段强制复核,不硬撑自动。
Q:多模态 LLM 抽字段有什么坑?
可能编造图上没有的值,必须配坐标/原文回溯校验,且成本比规则高。适合版式多变材料。
Q:复杂表格/跨页怎么设计?
表格用表格识别模型+单元格坐标;跨页按文档ID聚合多页、做页间坐标映射和合计拼接。
Q:PaddleOCR 在链路里干什么?
做中文 OCR 检测+识别+版面/表格分析,输出文字与坐标,是固定版式发票的首选开源方案。
FDE W2D2 学习手册 · 医疗 OCR Tool 与 Document AI(面试级)· 配合《FDE-W2D2-评测题.md》自测
📌 待查★ 重要