打开网易新闻 查看精彩图片

2026年,波士顿公共图书馆的档案库里躺着一百多万张老报纸扫描件,最早的一张可以追溯到1795年。

这些纸页记录了两百多年美国社会的日常,选举、船期、寻人启事、市场行情,还有大量密密麻麻的商业广告。问题是,这些内容基本上没法被计算机真正读懂。

你可能觉得这不算什么大问题,毕竟OCR技术都发展这么多年了,扫一扫不就行了。但老报纸和你手机里拍的文档完全是两回事。它们版式密集、栏目交错、字体年代久远还经常被虫蛀水渍破坏,传统OCR引擎面对这种页面常常连基本的分栏都识别不出来,更别提准确转录内容了。

这篇技术报告讲的,就是哈佛法学院图书馆的“机构数据倡议”团队和波士顿公共图书馆联手打造的一套处理流水线,专门用来把这堆看似不可读的老报纸,变成机器能理解、能检索、能训练AI的结构化数据。最终的产出相当惊人,从147万多张扫描件里,提炼出了163亿个o200k_base标准下的文本token,覆盖8310万个独立的内容碎片。

老报纸为什么这么难啃

想象你要在一张写满了字的传单上,用尺子把每一段广告、每一条新闻标题都精确框出来,而这张传单的排版设计师似乎从来没听说过"整齐"这个词。这基本就是历史报纸给计算机出的难题。

OCR*:光学字符识别,简单说就是让计算机把图片里的文字变成可编辑、可搜索的文本。

在这篇报告成文之前,业内已经有不少人尝试过用卷积神经网络处理老报纸,比如美国国会图书馆支持的Newspaper Navigator项目,还有另一个叫American Stories的数据集,两者都用CNN来做版面分割和分类。这些工作证明了CNN在这个场景下确实管用,但研究团队没有直接照搬,而是选择了一条不太一样的路。

他们把"分割"和"分类"这两件事彻底拆开做。分割负责回答"这张报纸上有哪些独立的内容块",分类负责回答"这个内容块到底是什么"。如果把这两步捏合成一个模型同时训练,会出现一个隐藏的坑:报纸上广告和正文内容占了绝大多数,罕见的漫画、插图占比极小,这种类别失衡会拖累整个模型在两个任务上的表现。这就好比让一个学生同时准备语文和数学考试,如果两科的题目混在同一张卷子里打分,某一科分数占比压倒性地高,最终这个学生大概率会为了保证总分而放弃另一科的深入训练。分开考试、分开评分,才能让两边都学得扎实。

Crop*:论文里定义的一个术语,指报纸扫描件上被框出来的一个矩形区域,可以是一段文字、一则广告、一张图片,也就是本文反复提到的"内容碎片"。

第一步:把整张报纸切成一个个碎片

研究团队选用了YOLO26x作为切分模型的底座,这是YOLO26系列里参数量最大的版本,5570万参数,但相对于动辄几十亿参数的大模型来说,依然算得上"轻量级选手",可以在普通工作站级别的硬件上跑起来。

YOLO*:You Only Look Once,一类广泛用于目标检测的神经网络架构,特点是速度快、能在一次前向计算里同时完成定位和识别。

为了训练这个模型,团队从波士顿公共图书馆的馆藏里随机抽取了1020张扫描件做标注,一共标出47485个独立的边界框。这里有个挺聪明的做法:210张完全靠人工从零标注,剩下810张先用中间版本的模型自动预标注,再让人工去审核修正。这种"人机接力"的标注方式省了不少功夫,最终9028个框是纯手工画的,剩下38457个是模型预标再人工订正的。

如果全靠人工标注1020张报纸上的四万多个框,工作量会大到让人望而生畏。但如果完全依赖模型自动生成而不做任何人工审核,又会把模型早期的错误一路带到最终数据集里,越滚越大。折中的办法是让模型先干粗活,人来把最后一道关,这跟老师傅带徒弟很像,徒弟先画个草图,师傅在草图上改,效率比师傅从头画一遍高得多,质量也比徒弟自己瞎画强得多。

最终模型在153张测试集上的表现是:精确率0.927,召回率0.910,F1值0.918,mAP@50达到0.955。简单说,这个模型基本能准确框出报纸上的绝大多数内容块。研究团队还用了一种叫Eigen-CAM的可视化技术,把模型内部关注的区域画成热力图,结果发现模型的注意力集中在报头和标题横幅上,并且能顺着版面的栏目结构游走,这说明模型确实学到了报纸版面本身的结构规律,而不是靠一些偶然的图像特征"蒙对"的。

跑完全部147万张扫描件后,模型一共识别出8314万7041个碎片,平均每张扫描件切出56.4个碎片。有意思的是,19世纪中期的报纸碎片密度明显更高,平均每页超过百个碎片,这背后的历史原因,报告没有给出定论,留给了未来的数字人文研究者去挖掘。

第二步:给每个碎片做OCR,用两套工具双保险

这是整个流水线里最烧钱也最烧脑的一环。

研究团队最早尝试直接把整张报纸扔给能做OCR的视觉语言模型VLM去识别,效果一开始看着挺唬人,但复杂或密集的页面上准确率会明显跳水。

VLM*:Vision-Language Model,视觉语言模型,一种既能看图又能理解和生成文字的AI模型。

这背后是有理论支撑的。已有研究发现,版面复杂度和文本行数是预测VLM转录错误率最强的两个因素,尤其是对参数量较小的模型影响更大。还有研究指出,把大段文字区域整体丢给VLM而不切成小块,会诱发"退化循环",模型开始不停重复同一个词或字符,把错误率彻底推高。

退化循环*:也叫token loop,指语言模型在生成文本时陷入死循环,反复输出相同的字符或词语,是VLM类模型的一个已知缺陷。

成本也是个绕不开的问题。如果用顶级商业模型来处理163亿token量级的文本,团队估算成本会落在25万到80万美元之间,这还只是按每百万输出token15到50美元计算的粗略估计。这就像你想给全市的图书馆装修,找顶级设计事务所一间间做定制方案当然效果好,但预算根本撑不住,你必须找到一套可复制、可控制成本的施工标准,哪怕牺牲一点点单间的精致度。

于是团队定了一个关键策略:把整张报纸切成碎片之后,在碎片级别做OCR,而且同时用两套工具。

一套是老牌的Tesseract 5,配合它的tessdata_best模型。Tesseract是开源OCR界的老将了,失败模式非常成熟可控,很少会像VLM那样"一本正经地编造"整句话。另一套是专门做OCR的VLM模型dots.mocr,只有30亿参数,不算大,但支持多语言、还能解析表格。研究团队一开始用的是它的前身dots.ocr,后来新版本发布后就切换过去了。

值得一提的是,dots.mocr偶尔的"幻觉"其实歪打正着地帮了忙。报告里举了个例子,一张被磨损的扫描件上写着"STORAGE",Tesseract识别出一堆乱码"TOR \GE Ste age Revs s",而dots.mocr居然完整还原出了"STORAGE Storage-Rooms may be found on application at The Advertiser Office",等于是靠语言模型的"脑补"能力把破损的文字给修复了。当然,这种脑补能力是把双刃剑,用对了地方是修复,用错了地方就是编造。

为了让VLM能在合理的时间内跑完上百万张扫描件,团队用vLLM推理框架配上8块NVIDIA L40S显卡,还实现了双缓冲机制,下一批数据准备的同时,当前批次正在跑推理,两边互不等待。

最终结果是,dots.mocr产出了163亿个token,Tesseract产出了147亿个,前者几乎在所有维度上都超过后者,无论是总量还是单页平均值。这跟VLM更擅长从密集、装饰性强、甚至受损的内容里抠出文字是吻合的。而在成本上,这套本地化方案把整个流水线的运行成本压到了大约2.5万美元,相比商业模型方案,省下了几十倍的开支。

给每个碎片贴标签:它到底是什么内容

光有文字还不够,得知道这段文字是广告、是新闻正文、还是版头这类装饰性内容。

研究团队又训练了两个小模型来干这件事:一个基于YOLO26m-cls的图像分类器,1160万参数;一个基于Model2Vec框架微调的静态词嵌入分类器,底座是potion-base-32M。

静态词嵌入*:一种不依赖注意力机制、计算速度极快的文本表示方法,牺牲了一些语义理解的精细度,换来极低的计算成本。

有意思的是,团队没有自己从零标注海量数据,而是先用一个300亿参数的开源视觉语言模型Qwen3-VL去自动打标签,人工审核了600条样本,严格标准下准确率91%,放宽一点到94.5%。这个思路跟前面切分模型的标注方式如出一辙,先让强模型打草稿,再人工把关,效率翻倍。

图像分类器最终训练用了18.8万条标注,文本分类器用了18.6万条,注意这里图像分类器的样本比文本分类器多出2577条,因为其中1740个是完全没有文字的"空白"碎片,这类碎片对文本分类器毫无意义,但对图像分类器来说,得靠人工把这些空白碎片旋转90度、-90度、180度来"扩容",避免这个类别的数据太稀少而让模型学不好。

两个分类器各有所长。图像分类器在识别"照片或插图"这种视觉主导的内容上表现出色,F1值0.84,比文本分类器的0.48高出一大截;对"漫画"类别更是达到0.92,远超文本分类器的0.68。反过来,在广告、正文这类文字信号丰富的类别上,两者旗鼓相当。

这其实很好理解:一张照片没有文字可以OCR,你光靠文本信号根本判断不出它是什么。但一段密密麻麻的广告文案,靠关键词和句式特征就能猜个八九不离十,图像信息反而不是决定性的。

如果只用单一分类器会怎样?团队给出了明确答案:两个分类器的意见有90.55%是一致的,但最终决策里,图像分类器贡献了95.03%,文本分类器贡献了95.51%,这意味着两者虽然重合度很高,但谁都无法单独replicate最终决策。这就好比医生看病既要听你描述症状,也要看化验单,两者缺一不可,单靠一项经常会漏诊。

最终统计下来,广告类碎片数量最多,占了59%,但正文类碎片虽然数量只占33%,却贡献了65.2%的文字token量。这个反差挺有意思的:广告版面占地方,但字不多;正文版面小一些,但字密度高。而且这个趋势随着时间推移越来越明显,从1870年代起,广告占用的版面面积开始明显超过它贡献的文字量,到1920年代这个落差扩大到15个百分点左右,说明广告在这段历史里变得越来越"重视觉、轻文字"。

搞清楚一页报纸该怎么读

如果你把一张报纸随手拍下来交给机器,机器怎么知道该先读左上角还是右下角?该沿着栏目竖着读还是跳着读?

这个问题在学术界叫阅读顺序检测,此前已有LayoutReader这类基于Transformer的方案,效果不错,但计算成本高,而且它们通常是在文字片段级别工作的,不是碎片级别。

研究团队没有选择这条重型路线,而是设计了一套基于HDBSCAN聚类算法配合规则后处理的轻量方案。

HDBSCAN*:一种基于密度的层次聚类算法,能自动识别数据里的簇结构,不需要预先指定簇的数量。

具体流程是这样的:先判断每个碎片是窄栏还是宽栏,窄栏的正文碎片先用HDBSCAN根据横坐标聚成一列一列的"栏目",非正文的窄碎片再按最近距离归到某一栏,跨栏的宽碎片则归到上方内容最多的那一栏,最后按照从左到右、每栏从上到下的顺序排出阅读路径。

这个思路挺像你自己翻一份报纸时的直觉:先扫一眼哪些是竖着排的窄栏,再顺着栏目往下读,遇到跨栏的大标题就先归类到它下方对应的那一段内容里。团队还专门处理了照片和漫画的排序,这类视觉元素按顶边而不是中心点排序,确保它们出现在自己配的文字说明之前,这也是符合人类阅读直觉的细节打磨。

为了验证这套方法靠不靠谱,团队标注了723张扫描件作为评测基准。结果显示,宏观位置准确率是72.1%,微观位置准确率是80.8%,肯德尔τ系数分别达到0.922和0.959。

肯德尔τ*:一种衡量两个排序序列相似程度的统计指标,取值范围从-1到1,越接近1说明两个排序越一致。

这两组数字看起来有落差,但恰恰揭示了一个有意思的现象:位置准确率要求每个碎片必须排在完全正确的那个精确位置上,而肯德尔τ衡量的是整体排序的相对顺序对不对。也就是说,哪怕某个碎片没有落在人工标注的确切索引上,只要它前后顺序的相对关系是对的,肯德尔τ依然会给出高分。这就像你把一副扑克牌按大小排序,就算有两张牌前后位置差了一格,只要整体从小到大的趋势没乱,这副牌"看起来"依然是排好序的。

不出所料,"照片或插图"和"漫画"这两类的位置准确率明显偏低,只有0.494和0.558,这跟版面复杂、视觉元素位置本身就不规则有关。研究团队也坦承,这套轻量方案没法完美处理特别复杂或独特的版面布局,未来可能需要引入Transformer方案来补足。

从文字里挖人名、地名、机构名

有了干净的OCR文本,下一步自然是想办法从里面挖出更细粒度的信息,比如这段话里提到了哪些人、哪些地方、哪些机构。

这一步团队用的是Flair框架里的ner-fast模型,这是一个"拿来即用"的现成工具,报告里明确说这部分产出是实验性的,团队没有专门针对这个历史报纸集合去做定制化开发。

NER*:Named Entity Recognition,命名实体识别,指从文本中自动抽取出人名、地名、机构名等专有名词的技术。

过滤规则也很直白:置信度低于0.85的直接丢弃,只保留人物、地点、机构三类实体,重复检测到的同一个实体,保留置信度最高的那条。

最终结果是,全库检测到1.556亿条地点提及、1.422亿条人物提及、4906万条机构提及。排名靠前的地名毫不意外地是"Boston"(866万次)、"New York"(416万次)、"Washington"(297万次),机构类前几名是"Congress"(60万次)、"Senate"(43万次)、"House"(39万次),这些结果和这份报纸集合的地域属性、时代背景高度吻合。

不过团队也很坦诚地指出了这个方法的局限:历史文本里的人名很多是当代NER模型从没见过的分布外样本,OCR质量本身的瑕疵也会传导到实体识别的错误里,甚至偶尔模型会把一些带有歧视性的历史用语误判成人名。这类数据可以用来辅助研究,但绝不能拿来直接下结论。

给每段文字打上话题标签

除了知道"这是什么类型的内容"和"里面提到了谁",团队还想知道"这段文字到底在讨论什么话题"。

这里用的是一个叫ModernBERT-large-zeroshot-v2.0的模型,基于ModernBERT架构做的零样本分类微调版本。

零样本分类*:Zero-shot Classification,指模型在没有专门针对某个具体分类任务做训练的情况下,仅凭对语义的理解就能完成分类判断的能力。

结果显示,全库最常见的主题是"商业、金融与市场报告"和"商业广告与分类信息",紧随其后的是"科学、技术、健康与农业"和"政治、国际关系与政府"。

有个细节值得琢磨:这个模型给出的置信度分数波动特别大,同一个标签下的标准差在0.08到0.23之间浮动。团队解释说这是零样本分类的固有特性,模型是靠文本蕴含关系去打分的,不是靠一个专门训练过的分布去判断,天然就会比监督学习模型的置信度更不稳定。这也是为什么团队反复强调这部分产出是"实验性"的,用户不能只看排名第一的标签就下判断,得看完整的分数分布。

不过好消息是,模型给出的第一名和第二名之间的置信度差距平均达到0.457,说明模型的首选答案通常是相当有把握的,不是随便乱猜的结果。而且从广告类碎片压倒性地对应"商业广告与分类信息"这个标签、正文类碎片则铺开分布在多个新闻类主题上来看,这套主题识别的结果和前面的碎片类型分类是自洽的,互相印证。

预先算好的向量,方便以后检索

这一步是为了让整个数据集"开箱即用"。团队给每个碎片同时生成了图像向量和文本向量,图像用的是facebook/dinov2-small,2200万参数;文本用的还是Model2Vec框架下的potion-multilingual-128M。

嵌入向量*:Embedding,一种把文字或图像转化成一串数字(向量)的技术,语义相近的内容在向量空间里的距离也会相近,方便做检索和相似度计算。

图像向量是384维,文本向量是256维,单个碎片的两套向量加起来大约占2560字节。放大到8300多万个碎片,图像向量总共约128GB,文本向量约85GB,合计213GB左右。

这一步的意义在于,未来任何人想在这个数据集里做"语义搜索",比如找出所有和"铁路事故"相关的内容,而不是死板地匹配关键词"铁路事故"这几个字,都能直接用这些预先算好的向量做检索,不用自己重新跑一遍模型。这就像图书馆提前把每本书的内容摘要做成索引卡片,你查资料时不用把每本书翻一遍,直接查卡片就行。

跑这套流水线到底要花多少钱和多少时间

团队把整套流水线部署在自己拥有的一台GPU服务器上,配置是8块NVIDIA L40S显卡、256个CPU核心、768GB内存。

处理时间上,两个OCR步骤占了大头。每处理200期报纸为一批,dots.mocr的OCR平均要跑28.62分钟,Tesseract平均16.48分钟,两者加起来占了整批86.69分钟总耗时的一大半。其余十三个步骤加起来反而没那么费时间,大多数几分钟就能跑完。

如果换成租用云端GPU资源,团队估算总成本大约2.5万美元,按照总运行时长约1650小时、每小时租用8卡L40S节点约15美元来算。这个数字和前面提到的商业大模型方案25万到80万美元的报价放在一起看,差距立刻就出来了,同样是处理163亿token量级的文字,选择本地化小模型加合理架构设计的路线,成本能压缩到十分之一甚至更低。

这背后其实是一整套工程优化在支撑。团队发现YOLO26模型在批量推理时,图像预处理环节居然是串行执行的,没有充分利用并行计算能力,于是自己动手把这部分重写成并行处理再喂给模型。扫描件的读取和解码也做了本地磁盘缓存,让下一批数据的读取能和当前批次的计算重叠进行,不用来回等待。这些听起来琐碎的细节,累积起来对整体效率的影响相当可观。

这套数据能拿来干什么,又有什么该注意的

报告里特别强调了几个使用上的风险提示。

版权方面,团队只收录了1931年以前出版、在美国确定属于公共领域的报纸内容,但也提醒用户,美国境内公共领域不代表在其他司法管辖区也一定没有版权限制。

内容方面,这些老报纸原原本本反映了它们所处时代的语言和观念,里面难免包含种族歧视、性别偏见等今天看来冒犯或过时的表述。团队选择保留原始内容不做删改,是为了保留历史语境和研究价值,但也提醒读者要带着批判性眼光去看待,这些材料不构成对任何议题的平衡呈现。

另外,命名实体识别、主题分类、种族及移民相关关键词匹配这几项产出都被明确标注为实验性质,团队没有回避这些工具在处理历史文本、尤其是涉及敏感历史词汇时可能出现的局限和风险。

在报告的结尾,团队也很直白地承认了整套系统目前的边界。这套模型是基于波士顿公共图书馆这一个馆藏训练和测试的,换一批版式差异很大的报纸,效果很可能会打折扣。阅读顺序检测对严格按栏目排版的报纸效果好,遇到不规则版面就容易露怯。而VLM级别的OCR,依然是整条流水线里最耗计算资源的瓶颈,团队甚至提出了一个具体设想,专门针对历史报纸碎片训练一个更小、更准、更不容易陷入重复循环的定制化VLM,作为未来的改进方向。

Q&A

Q1:这套历史报纸处理流水线一共生成了多少数据?

A:处理了147万3635张波士顿公共图书馆的公共领域报纸扫描件,覆盖1795年到1930年,最终提炼出163亿个o200k_base标准token,涉及8310万个独立内容碎片。

Q2:为什么不直接用ChatGPT这类大模型来做OCR,反而要自己搭一套流水线?

A:成本和稳定性都撑不住。用顶级商业模型处理163亿token量级的文本,估算成本要25万到80万美元,而且大模型在密集复杂版面上容易出现重复循环等错误。团队改用碎片级OCR加本地小模型的方案,把成本压到约2.5万美元。

Q3:这套流水线用了哪些AI模型来处理报纸?

A:包括YOLO26x做版面切分、YOLO26m-cls和Model2Vec做双重内容分类、Tesseract和dots.mocr做双重OCR、Flair做命名实体识别、ModernBERT做主题分类,以及DINOv2和Model2Vec生成图文向量。