
授权与合规声明本文全部操作对象均为自建隔离环境与已获授权的目标涉及安全测试或以他人系统为对象的环节必须以取得合法授权为前提。未经授权的测试违反《中华人民共和国网络安全法》与《刑法》相关条款须承担相应法律责任。本文只讲可复现的技术实操与工程落地不含任何攻击步骤、利用载荷与绕过手法请勿将文中任何内容用于非自有、未获授权的系统。第1章 为什么纯 OCR 规则会越维护越痛把财务报表、运营看板、论文图表截图丢进系统自动变成可查询的结构化数据——这是很多数据团队的刚需。老一套做法是 OCR 先把字抠出来再写一堆正则和坐标规则去拼结构。这条路在版式固定的场景能跑一旦碰上真实世界的截图维护成本会迅速失控。1.1 版式多变是规则的天敌真实截图不是排好版的表格而是各种意外的组合合并单元格跨行跨列的表头靠行列线切分必然错位。双轴图 / 组合图一张图里柱线和两条 Y 轴刻度、单位、图例各自为政。图例错位图例被挤到角落或叠在图形上颜色和系列的对应关系靠猜。多栏混排图表上方一段说明、旁边一个表格OCR 出来的文字顺序是乱的。每多一种版式规则就要补一茬。规则之间还会互相打架改一处崩三处。1.2 维护成本随版式数量线性膨胀更麻烦的是规则是见招拆招没有泛化能力。上游换个模板、调个配色、改个列宽你的解析脚本就要跟着改。当截图来源有较多不同时规则的边际维护成本会明显上升最终变成改不动、不敢动的负债。下面这张表对比了几类常见形态以及纯规则解析的难受程度图表形态规则解析难度主要痛点是否值得上模型固定列宽的库存表低几乎无变化不必带合并表头的周报中表头跨行跨列视稳定性双轴销售趋势图高双刻度、图例错位值得论文多子图组合高子图编号与说明混排值得扫描件表格照片高倾斜、噪点、扭曲值得第2章 选型判据看版式稳定性不看模型热度很多人一上来就问用哪个模型其实该先问要不要上模型。我给的判据只有一条主线版式是否稳定结构能否用规则还原。2.1 判据一版式是否固定如果截图来自你完全可控的系统自己导出的固定模板、内部看板的固定组件版式几乎不变那 OCR 规则是最稳、最便宜的方案别为了赶时髦上模型。2.2 判据二结构能否用规则还原哪怕版式看起来规整只要关键信息如双轴对应关系、合并单元格语义无法用坐标和正则稳定还原规则就迟早翻车。这类结构难还原的场景才是多模态模型的用武之地。场景特征版式稳定性结构可还原性选型结论自有系统固定导出高高规则优先第三方看板截图中中规则 兜底校验多来源混合截图低低上多模态模型扫描件 / 拍照表格低低上多模态模型选型判据一句话版式固定且规则能覆盖 → 别上模型版式多变、结构难用规则还原 → 上多模态模型。第3章 多模态模型怎么调图片加 prompt 一起发多模态视觉语言模型的用法很直接把图片和文字指令放进同一次请求让模型看着图理解并回答。主流模型如 GPT-4V 类、Qwen-VL 类、GLM-4V 类具体能力以官方最新公布为准都支持图 文的多轮输入。3.1 一个请求把图和指令打包关键是 prompt 要把我要什么、长什么样讲清楚。下面是一段调用示意接口字段以你选用的模型文档为准⚠️ 代码待验证importbase64defbuild_messages(image_path:str,schema_hint:str)-list:withopen(image_path,rb)asf:b64base64.b64encode(f.read()).decode(utf-8)# 图片与指令同一次请求发送return[{role:user,content:[{type:image_url,image_url:{url:fdata:image/png;base64,{b64}}},{type:text,text:(请阅读这张图表截图只输出 JSON。字段定义如下schema_hint不要输出任何解释性文字只输出 JSON 本身。)},],}]3.2 few-shot 给 1–2 个示例版式特别野的时候给 1–2 个输入图说明 期望输出的示例能显著压住模型的自由发挥。示例里挑和线上最像的版式别给无关样例否则会带偏。第4章 把输出锁死成结构化Schema 约束 规则校验模型最大的不确定是它会自作主张地多说话、改字段名、填错类型。工程上要用两层锁把输出管住。4.1 用 JSON Schema 告诉模型字段长什么样把字段名、类型、是否必填写进 prompt最好直接贴一段 JSON Schema。下面是一个最小示例{type:object,required:[title,series],properties:{title:{type:string},x_axis:{type:string},series:{type:array,items:{type:object,required:[name,points],properties:{name:{type:string},unit:{type:string},points:{type:array,items:{type:number}}}}}}}4.2 要求模型先描述再输出对复杂图可以命令模型先用一段话描述你看到了什么坐标轴、系列、单位再输出 JSON。这样既能让你肉眼复核它的理解对不对也变相逼它把结构想清楚减少漏字段。4.3 对关键字段做规则校验模型吐出的 JSON 必须过一道程序化校验而不是信了就入库。校验包括必填字段非空、数值类型正确、数值落在合理区间、枚举值在白名单内。⚠️ 代码待验证importjsonschema,jsondefvalidate_chart(obj:dict,schema:dict)-list:errors[]try:jsonschema.validate(instanceobj,schemaschema)exceptjsonschema.ValidationErrorase:errors.append(fschema错误:{e.message})# 业务规则点数不能为 0数值需为有限数forsinobj.get(series,[]):iflen(s.get(points,[]))0:errors.append(f系列{s.get(name)}点位为空)ifany(notisinstance(p,(int,float))orp!pforpins.get(points,[])):errors.append(f系列{s.get(name)}含非法数值)returnerrors一个被校验通过的输出应当长这样{title:季度销售额趋势,x_axis:月份,series:[{name:线上,unit:万元,points:[12,19,23,30]},{name:线下,unit:万元,points:[20,18,15,14]}]}第5章 精度验收别盲目信模型模型在常见版式上表现不错但遇到没见过的版式仍会编数据、看错图例。验收必须落到可量化、可复盘。5.1 规则校验兜底每一条模型输出都先跑第 4 章的校验函数把不通过的自动打回重发或转人工。这是第一道闸能拦掉大部分明显错误类型错、字段缺、数值越界。5.2 人工抽检按比例规则查不出的语义错比如把图例 A 当成图例 B只能靠人。按批次抽一部分由人工核对原图与 JSON 是否一致记录差错类型反过来优化 prompt 和示例。验收环节检查内容执行方不通过处理Schema 校验字段齐全、类型正确程序自动打回区间校验数值在合理范围程序标红待审图例一致性系列名与图例对应人工修正 补示例抽样复核原图与 JSON 一致人工记录差错率配套资料这一章讲到的实操要点我整理成了可运行的示例与对照表放在资料包里扫码即可获取第6章 成本账模型只负责看不懂的结构上模型不是免费的。按图计费的调用图一多账单就不好看。算账的核心是能规则解析的别上模型模型只负责规则看不懂的那部分。6.1 按图计费与批量的取舍单张零散截图适合实时按图调用如果是历史存量大批量考虑离线批处理、错峰调用并在入库前先用规则做能不能解析的预筛把确定能规则搞定的直接放行只剩难结构进模型。6.2 能规则解析的别上模型一个可落地的混合流程先跑规则解析成功且校验通过就直接入库失败或置信度低的才把图和上下文丢给多模态模型。这样模型调用量能明显压下来。处理方式适用部分成本特征建议纯规则解析版式固定、结构清晰低且稳定优先规则 模型兜底多数可规则、少数例外中主推全量上模型版式极多变高仅必要时第7章 和 RAG 结合让问答能引用图表内容把截图变成结构化数据不是终点。真正的价值是让知识库读得懂图表问答时能直接引用图表里的内容。7.1 图表转成的文字 / 表格进知识库模型产出的 JSON / Markdown 表格序列化成自然语言段落如图《季度销售额趋势》中线上系列在 4 月为 30 万元……“切块后写入向量库。这样图表就从一张图变成了可检索的事实”。⚠️ 代码待验证defchart_to_passage(chart:dict)-str:lines[f图表《{chart[title]}》横轴为{chart[x_axis]}。]forsinchart[series]:pts、.join(str(p)forpins[points])lines.append(f系列「{s[name]}」单位{s.get(unit,)}数值为{pts}。)return.join(lines)# 将 chart_to_passage 结果切块后 embed 写入向量库伪代码# store.add_documents([chunk_for(passage) for passage in [chart_to_passage(item001)]])7.2 问答如何引用图表内容检索时用户问哪个月线上卖得最好命中图表片段后回答里带上图表标题与具体数值并可回链原图。这样回答既有依据又能量化溯源。环节输入输出图表参与方式解析截图结构化 JSON模型理解版式序列化JSON自然语言段落转成可检索文本检索用户问题相关片段命中图表内容回答片段 问题带出处的答案引用标题与数值配套资料这一章讲到的实操要点我整理成了可运行的示例与对照表放在资料包里扫码即可获取附表 A本文引用事实与出处对照表事实陈述出处 / 依据本文位置视觉语言模型支持图 文同一次请求输入主流多模态模型通用交互形态通用稳定技术事实第3章可用 JSON Schema 约束模型输出结构通用工程实践结构化生成第4章模型在未见版式上可能编数据 / 看错图例多模态模型通用局限性通用稳定技术事实第5章混合流程规则优先、模型兜底可降低调用量工程落地通用经验第6章具体模型能力、价格、版本以各厂商官方最新公布为准全文待验证附表 B术语速查表术语含义多模态大模型 / 视觉语言模型能同时处理图像与文本的模型Chart QA针对图表的问答任务few-shot在 prompt 中给少量示例引导输出JSON Schema描述 JSON 结构的约束规范RAG检索增强生成问答时引用外部知识写在最后这篇用到的资料写这篇文章时我把里面对应的实操示例和踩坑记录顺手整理了几份配套的东西全套 AGI 大模型学习路线从基础到实战的系统性路径避免零散摸索Claude Skills 全指南把重复性工程动作沉淀成可复用技能LangGraphMCP 智能体实战视频跟着敲一遍就能跑通的智能体项目资料是我自己整理的放在下面这个码上扫码即可获取资料较多建议先看「全套 AGI 大模型学习路线」再挑一个实战项目跟练。