古籍OCR新解法:DDVR-Net让大模型只在字烂的时候出手

文章目录

    • 前言
    • [1. 两条老路,都不好走](#1. 两条老路,都不好走)
      • [1.1 第一种:纯视觉硬刚](#1.1 第一种:纯视觉硬刚)
      • [1.2 第二种:语言模型脑补](#1.2 第二种:语言模型脑补)
      • [1.3 第三种解法](#1.3 第三种解法)
    • [2. 历史文档,凭什么是地狱难度](#2. 历史文档,凭什么是地狱难度)
      • [2.1 三种文字,三种倒霉法](#2.1 三种文字,三种倒霉法)
      • [2.2 混合可见度:真正的杀手锏](#2.2 混合可见度:真正的杀手锏)
    • [3. 先把考卷出了:187,000对数据怎么造](#3. 先把考卷出了:187,000对数据怎么造)
      • [3.1 人工真实采集](#3.1 人工真实采集)
      • [3.2 半自动合成](#3.2 半自动合成)
      • [3.3 全自动生成](#3.3 全自动生成)
      • [3.4 质控:合成数据最怕"假"](#3.4 质控:合成数据最怕"假")
    • [4. 核心思路:给每个字发一张"可信度许可证"](#4. 核心思路:给每个字发一张"可信度许可证")
      • [4.1 第一步:解耦------把"字长啥样"和"字咋坏的"拆开](#4.1 第一步:解耦——把"字长啥样"和"字咋坏的"拆开)
      • [4.2 第二步:发许可证------每个字都有自己的可见度评级](#4.2 第二步:发许可证——每个字都有自己的可见度评级)
      • [4.3 第三步:语言模型登场------但只在该登场的地方登场](#4.3 第三步:语言模型登场——但只在该登场的地方登场)
    • [5. 效果数字:两头兼得,是靠什么换来的](#5. 效果数字:两头兼得,是靠什么换来的)
      • [5.1 整体性能](#5.1 整体性能)
      • [5.2 消融实验:这才是全文最诚实的部分](#5.2 消融实验:这才是全文最诚实的部分)
      • [5.3 解耦到底有没有用](#5.3 解耦到底有没有用)
      • [5.4 数据怎么喂也有讲究](#5.4 数据怎么喂也有讲究)
      • [5.5 效率上的反直觉惊喜](#5.5 效率上的反直觉惊喜)
    • [6. 一个案例看懂"选择性兜底"](#6. 一个案例看懂"选择性兜底")
    • [7. 泼点冷水](#7. 泼点冷水)
      • [7.1 考卷是自己出的](#7.1 考卷是自己出的)
      • [7.2 依赖现成的字符框](#7.2 依赖现成的字符框)
      • [7.3 不便宜](#7.3 不便宜)
      • [7.4 上下文以行为单位](#7.4 上下文以行为单位)
    • [8. 最后说两句](#8. 最后说两句)

P.S. 推荐一个大神的教程给想要了解或者学习人工智能知识的读者,这个教程里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏教程,请点击下方链接查看,传送门https://blog.csdn.net/qq_74013365

前言

做文档识别这行的,估计都有过这种经历。

现代扫描件丢进去,流水线跑起来丝滑得像喝冰可乐------框选、识别、后处理,一条龙出结果,准确率高到你都不好意思收钱。

然后老板甩给你一份古籍高清扫描页。

虫蛀的洞正好啃掉半个字,水渍把三四个字糊成一团,墨迹褪得只剩笔画的影子。你盯着屏幕沉默了三分钟,开始怀疑自己入错了行。

更气人的是,这些破坏从来不整整齐齐地来。同一行里,有的字清清楚楚像刚写的,有的只剩半边像被狗啃了,有的干脆消失了,仿佛古人写完顺手擦了一半。

你说这怎么弄?

1. 两条老路,都不好走

遇到这种情况,传统玩法有两种。

1.1 第一种:纯视觉硬刚

传统OCR一板一眼看图认字,图上有什么它认什么。证据不足怎么办?交白卷,或者瞎猜一个。

就像你考试遇到不会的题,空着又不甘心,于是填了个"C",心里祈祷四分之一概率能蒙对。

1.2 第二种:语言模型脑补

换个思路,用大语言模型做后纠错。它确实能根据上下文把残缺的字"脑补"出来,听起来很美好对吧?

问题是这货兴头上来了,连本来清清楚楚的字也一起改。

学术点叫"过度修正"。直白点说,就是帮倒忙。

你跟它说"帮我校对一下这段文字",它比你二舅还热心------二舅至少还知道哪些地方该改,它是看哪都不顺眼,非得给你润色一遍。本来95分的卷子,它给你改成89分,还觉得自己做了好事。

这就离谱了。

1.3 第三种解法

ACM MM 2026上,中央民族大学和北方工业大学的团队搞了个DDVR-Net,给这个两难提供了第三条路:

先判断每个字"还能不能信",能信的纯靠眼睛看,不能信的才让语言模型按上下文修。

听着像句废话?别急,怎么判断、怎么修,全是细节,而且数字相当能打。

2. 历史文档,凭什么是地狱难度

先说清楚这问题有多特殊。

论文选了三种低资源文字:藏文、传统蒙古文、维吾尔文。光"字难"还不够,各自的书写结构还各有各的脆弱点。

2.1 三种文字,三种倒霉法

藏文有叠字结构,音节上下堆叠像搭积木。破损一来,叠层直接散架------上面那个字的下半截掉下来,刚好砸在下面那个字的上半截上,你说这算谁的?

传统蒙古文竖着写,字形还随上下文变体。竖向笔画一断,连写关系就没了,就像一句话中间被人剪了一刀,你都不知道从哪儿接回去。

维吾尔文从右往左连笔书写。一个污点糊住一片,首尾都接不上,跟你手机信号突然消失了似的,人就在那儿,你就是联系不上。

2.2 混合可见度:真正的杀手锏

但真正的杀手锏是一个概念:混合可见度。

一页历史文档里,清晰字、部分破损字、严重破损字混在一起。你统一对待这三种字,注定顾此失彼------就像你不能用给小学生补课的方法去教研究生,也不能用给研究生讲课的方式去哄小学生。

这个判断被数字狠狠坐实了:GPT-4o在藏文测试集上字符准确率只有58.72%,Qwen3-VL也才61.29%。

大模型见多识广又怎样?架不住这几种文字的"课",它压根没上过几节。你让一个只会英语的人去读藏文古籍,再聪明也白搭,巧妇难为无米之炊,这话一千年前就有人说过了。

3. 先把考卷出了:187,000对数据怎么造

低资源语言搞深度学习,第一瓶颈永远不是模型,是数据。

你跟我说你有个SOTA模型?好,拿出来跑一下。------跑不了?为什么?没有数据啊兄弟。

团队搞了三条管线,各管一摊。

3.1 人工真实采集

跟博物馆、档案馆合作,收了5,000对真实整页文档。佛经、史书、契约、行政记录都有。

标注更夸张:母语专家加博士生做字符级标注,双重独立标注再加专家仲裁。

我跟你说,做数据集最痛苦的不是找数据,是标数据。你让一个人盯着模糊的古文字,一个字一个字地认、一个框一个框地拉,拉到第五百页的时候,他看什么都像字------外卖订单上的"谢谢光临",他都觉得是藏文。

3.2 半自动合成

对保存完好的历史页面"反向修复"------用LAMA抠笔画、贝塞尔曲线造裂缝孔洞、模拟墨蚀褪色,人为注入历史合理破损,产出32,000对。

说白了就是:好端端的一页纸,我故意给它弄破。弄破还得讲技术,不能随便泼杯水上去------那叫破坏文物,不叫数据增强。

3.3 全自动生成

从真实页面提取纸色、纹理、行距这些非文本先验,让GPT只把它们转写成风格描述(明确不许它生成文字内容),SDXL加LoRA生成做旧空白背景,再用历史字体渲染文本、注入破损。

每语言50,000对,共150,000对。

这里有个细节特别有意思:他们明确跟GPT说,你只负责描述背景风格,文字内容不许你写。为什么?因为GPT写出来的"藏文",那玩意儿真就是鬼画符------它自己都不知道自己在写什么,纯纯的视觉混淆。

3.4 质控:合成数据最怕"假"

合成数据最容易翻车的地方就是"假"。你生成的东西看着像历史文档,实际上破绽百出,专家一眼就看穿了。

论文的质控做得相当较真:破损面积超25%的页直接扔;保留样本要求CLIP视觉相似度高于0.82、VLM真实感评分超4.0(满分5);盲测里95%的合成背景被有二十五年以上经验的文献专家判定"历史上说得过去"。

标注一致性也给了数:字符转写的Cohen's κ达到0.91。这个数值什么概念?1是完全一致,0.91意味着两个标注者的判断高度吻合,不是那种"我觉得是这个字""我也觉得是"的心照不宣,是真的在认真标。

每个字都有四样标注:边界框、内容标签、可见度状态(清晰/部分破损/严重破损三档)、破损类型。

这四样东西,正是后面方法能转起来的前提。没有这四样,你连这个字坏没坏都不知道,还谈什么选择性修复?

4. 核心思路:给每个字发一张"可信度许可证"

方法部分论文画了一张信息量很大的框架图,我们照着走一遍。

4.1 第一步:解耦------把"字长啥样"和"字咋坏的"拆开

整页图像过CogViT(一个0.4B的视觉编码器)编码,每个字符区域用RoIAlign取出局部特征。

关键动作来了:把这路特征投进两个并行的小网络,硬生生劈成两半------一路只管"这个字本来长什么样"(字形特征),一路只管"它被怎么毁了"(破损特征)。

凭什么说拆得开?论文的假设很直白:字的拓扑结构是内禀属性,破损只是外来的视觉扰动。就像一个人长什么样是他自己的事,他摔了一跤脸上擦破了皮,那是外伤,不是他长得就那样。

拆开了还得拆干净,否则字形那路偷偷夹带破损信息,等于白拆。就像你把感冒药和维生素放两个瓶子里,结果感冒药的味儿还是飘过去了------吃维生素的人照样犯困。

所以有三个损失一起上:字形特征用监督对比学习保证一致性,破损特征做多标签分类保证判别力,两路特征之间加正交约束,强迫两路向量互相垂直,防止信息串门。

这操作我熟,就像上学的时候同桌两个,老师特意把她们的桌子中间画一条线------"三八线",谁也不许越界。物理隔离,从根源上杜绝传纸条。

4.2 第二步:发许可证------每个字都有自己的可见度评级

字形特征走识别头,直接输出这个字的局部识别结果;破损特征走可见度头,预测该字属于清晰、部分破损还是严重破损。

注意一个细节:严重破损的字被排除在局部识别的训练之外。证据都没了,硬逼着视觉分支学,只会教坏它。

这就像你让一个盲人去看画展,他能说出个啥?不如让他去听音乐会,扬长避短。

4.3 第三步:语言模型登场------但只在该登场的地方登场

每个字符连同上下文喂给一个Qwen2.5-0.5B的小模型,用LoRA微调,只训一小部分参数。

但训练时有个确定性的开关:只有部分破损和严重破损的字才产生上下文修复的损失,清晰字碰都不让它碰。

最终识别结果是两路的按权重融合:

复制代码
P(c) = α · P_local(c) + (1 − α) · P_ctx(c)

这个公式一句话说清:α是由可见度预测算出来的门控权重------字越清楚α越接近1,结果越听视觉的;字越破α越接近0,结果越听上下文的。

训练分三阶段走:先解耦表征、再局部感知、最后上下文对齐。数据课程从15万全自动合成到3.2万半自动、最后5千真实数据收尾,先易后难,一层层垫。

整个设计翻译成人话就是:语言模型从"默认纠错器"降级成"按需兜底"------不出手则已,出手必须是因为字真的坏了。

就像请了个律师,你别让他啥案子都接,就让他接那种证据不足的疑难杂案。证据确凿的案子,法官自己就能判,你非要请律师来,他反而觉得哪里不对劲,非要给你翻供。

5. 效果数字:两头兼得,是靠什么换来的

主结果先上数字。

5.1 整体性能

藏文测试集上:DDVR-Net字符准确率86.47%,专用历史文档方法里最强的PreP-OCR是72.18%,GPT-4o只有58.72%。

蒙古文和维吾尔文同理,字符准确率分别为84.35%和85.34%,对最强基线全面领先。

差距主要拉开在难的那一档:严重破损字符准确率DDVR-Net 61.54%,PreP-OCR只有40.15%,GPT-4o更是只有22.15%。

CER(字符错误率,越低越好)这边,DDVR-Net三语分别为9.83%、11.23%、10.45%,是所有对比方法里唯一低于16%的。

5.2 消融实验:这才是全文最诚实的部分

真正有记忆点的,是那组"两头兼得"的消融数字。

纯视觉(Local-only):清晰字准确率最高,93.80%,但严重破损字准确率崩到12.50%------眼睛好使,遇到窟窿就瞎猜。就像一个视力2.0的人,你把他眼睛蒙上,他立刻变成路痴,连自己家门都找不到。

全量纠错(Uniform Context,所有字都过语言模型):破损字修上来了,清晰字准确率却从93.50%被拖到89.20%,整页序列准确率同步下滑------典型的帮倒忙。

你说这语言模型是不是跟你那只会收拾房间但越收拾越乱的室友一模一样?你出门前房间明明挺整洁的,他"好心"帮你整理了一下,你回来发现所有东西都在它觉得"应该在"的位置,而你在你自己的房间里像个客人。

DDVR-Net(可见度门控):清晰字93.50%,严重破损字61.54%,两头都站住了。

这组数字基本就是全文论点的具象化:不是"要不要用语言模型",而是"什么时机用"。

顺带一提,换成硬开关(清晰/破损一刀切)全面略逊于连续的软门控,说明边界地带的字需要一个渐进的信任度,不是非黑即白。

这就像你对一个人的信任,不会因为他昨天撒了个小谎就清零,也不会因为他今天帮了你个忙就拉满。信任是连续的,是渐变的,不是开关。

5.3 解耦到底有没有用

解耦本身的贡献也被单独验证了:去掉双分支解耦,严重破损字准确率从61.54%掉到42.30%,CER从9.83%涨到15.50%,是所有消融里伤得最重的一项。

也就是说,"把字坏了和看不清拆开算"不只是个漂亮的说法,是实打实的主增益来源。

你以为人家是在玩概念?人家是真的靠这个涨了将近20个点。

5.4 数据怎么喂也有讲究

论文对比了五种训练顺序:反过来训(先真实后合成)只有80.40%,全部混在一起训是83.15%,而"15万全自动合成→3.2万半自动→5千真实"的渐进课程拿到86.47%。

只用手头那5千对真实标注更是只有76.50%,严重破损字准确率直接腰斩到41.20%。

对低资源场景来说,这组数字的价值不输模型架构本身------合成数据不仅要用,还得放在最前面用。

就像学游泳,你不能一上来就把人扔深水区,那叫溺水,不叫学游泳。得先在浅水区扑腾,再到深水区练,最后才能去公开水域。循序渐进,老祖宗的智慧,放到深度学习里照样好使。

5.5 效率上的反直觉惊喜

因为只对坏字跑语言模型,DDVR-Net单页推理438.5毫秒,比"什么都修"的Uniform Context的612.7毫秒快了近三成。

你看,选择性工作不仅效果好,还更高效。这道理放到职场上也成立------别什么活儿都揽,专注处理真正需要你的问题,你产出的价值反而更高。

当然,代价也得看见:921M总参数、6,144 GPU小时的训练开销。这笔账我们后面算。

6. 一个案例看懂"选择性兜底"

数字看累了,直接看一眼真实页面的对比。

同一份残卷,三种方法输出的结果完全不同。

蓝色框的清晰字区域:纯视觉和DDVR-Net都认对了,全量纠错却出现了幻觉改写------语言模型看着字迹清楚,硬是按"更通顺"的方向给改了。

它改的时候还觉得自己挺聪明。你看这个地方,"之乎者也"四个字,多不通顺啊,我给改成"的了吗呢",一下就现代了。

红色框的严重破损区域:纯视觉输出一片错误标记,彻底失败;DDVR-Net的可见度预测触发上下文修复,恢复质量追平了全量纠错。

同一页、同一行,清楚的字靠视觉保真,破碎的字靠上下文救命------这就是整个方法的一句话写真。

这套范式能不能搬走?论文场景是低资源历史文档,但"先估证据可靠性,再决定调不调语言模型"的思路,我个人觉得,凡是"大部分证据完好、少数区域受损"的识别任务都值得试。

比如表格识别里被印章遮住的单元格、图纸里被折痕压住的标注。反过来,如果整页都烂,可见度全员亮红灯,门控就退化成全量纠错了,别指望它点石成金。

7. 泼点冷水

优点说完了,这几处得掰开看。

7.1 考卷是自己出的

所有评测都在自建基准上进行,作者在结论里坦诚"第三方独立基准评测留作future work"。

防泄漏设计(按页划分、来源隔离、盲测)是认真的,但SOTA的含金量终究绑定在这个基准的代表性上。

就像你自己出卷子自己考,考了满分,你说你是年级第一------理论上有这个可能,但你得等别的同学也来考一次,大家才心服口服。

7.2 依赖现成的字符框

主实验用的是标注字符框(为了隔离识别与修复问题),落地得外接检测器。论文给了框扰动鲁棒性测试协议(坐标偏移5%--20%、随机删框5%--10%),但真实检测器在重度破损页上的漏检恐怕比随机模拟更凶。

这就像你做饭的时候,菜都是洗好切好配好的,你炒出来味道当然不错。真要从买菜摘菜洗菜开始,那就是另一回事了。

7.3 不便宜

6,144 GPU小时的训练成本和921M的总参数,对真正守着这些低资源语言的团队来说门槛不低。

"低资源"省的是数据,不是算力。你以为低资源语言的研究者穷得只剩一腔热血?人家是真的没有GPU啊兄弟。

7.4 上下文以行为单位

修复解码器建模的是行内序列,跨行、跨页的语义(比如佛经里高度模板化的段落结构)有没有用上,论文没有展开。

还有一条给复现者的提醒:合成数据的质控依赖CLIP与VLM打分的双阈值,阈值是在验证集上调的,换语种、换文书类型时这两道闸门大概率要重调。

8. 最后说两句

回过头看,DDVR-Net最大的启发可能不在某个具体模块,而在它对"语言模型该干什么"的重新定位:

视觉证据充分时,语言模型是风险而非助力;证据坍塌时,它才是救命稻草。

可见度门控就是把这个判断做成了可训练、可微调的显式机制,而不是指望端到端训练自己悟出来。

对做文档数字化、档案整理、RAG语料清洗的人来说,一个直接的行动启示:如果你的流水线正在无差别地用LLM后纠错OCR结果,先想想能不能加一层"这个字还能不能信"的判断。

数字已经把代价写明白了:全量纠错会把清晰字的准确率从93.50%拖到89.20%,还慢28%。

这买卖亏不亏?你自己算。

至于藏文、蒙古文、维吾尔文的研究者,187K对、带字符级可见度和破损标注的基准,大概是比模型本身更实在的贡献。

毕竟在这个领域,缺的从来不是想法,是可以公平比划的考场。

P.S. 推荐一个大神的教程给想要了解或者学习人工智能知识的读者,这个教程里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏教程,请点击下方链接查看,传送门https://blog.csdn.net/qq_74013365

相关推荐
HackTwoHub1 小时前
红队低成本 IP 轮换方案 ProxyCat升级版,自动扩容代理池、负载分摊转发,一键部署,告别高价隧道代理
网络·人工智能·网络协议·tcp/ip·安全·web安全·网络安全
华为LTCITR专栏流程专家许浩明1 小时前
ITR经验经典案例|服务ITR咨询|诚易达咨询公司许浩明团队辅导杰克科技服务ITR变革
大数据·人工智能·科技
寻道码路1 小时前
AI Agent 工程化开发实战(四):工具调用循环——解构 create_agent 背后的机制
人工智能·langchain·ai agent·工具调用·langgraph
JJJennie7771 小时前
MAI Gateway实战部署:大模型网关部署方案?从0到1上手指南
数据库·人工智能·gateway·ai网关
涛思数据(TDengine)1 小时前
支撑药企全球化合规:TDengine 发布中美欧三地监管对照白皮书
大数据·数据库·人工智能·ai·tdengine
oioihoii1 小时前
Deepseek v5 来了
人工智能
zhongerzixunshi1 小时前
军工保密资质|筑牢涉密科研生产安全底线
人工智能·安全
绕灵儿1 小时前
火灾检测-应用场景-YOLO训练记录
人工智能·算法
超级架构师1 小时前
让 COBOL 长出 AI 大脑:原生 Agent 核心框架 praxo-core 深度剖析
c语言·开发语言·c++·人工智能·python·架构·ai编程