
💡 一句话总结:这条管线把历史报纸从“页图加 OCR 噪声”改成 crop 级结构化数据;每个 crop 挂着文本、类型、语言、实体、主题、顺序和向量,研究者可以过滤、重建和审计。
导语:历史报纸 OCR 的灾难,从栏目串读开始
历史报纸大概是文档处理里最难啃的版面之一:新闻、广告、标题、图像、漫画和 masthead 混在一页;栏目不规则,纸张破损,字号小,语言多样。
如果直接做页级 OCR,常见结果不是“读错几个字”,而是栏目串读。广告接进新闻,标题接进评论,长文章的阅读顺序被打散。文本量看起来很大,语义结构却坏掉了。
这篇报告的路线是 crop-first:先把页面切成 type-agnostic 版面单元,再对每个单元做 OCR 和语义标注。crop 成为基本数据对象,而不是临时中间产物。
想自己动手试?
这篇论文到底想解决什么问题?
论文要解决的是:如何把 dense、不规则且噪声严重的历史报纸扫描,转换成可检索、可比较、可复用的结构化文本数据。
数据来自 Boston Public Library 的 1,473,635 张 1795-1930 年公版历史报纸扫描。管线最终得到 83,147,041 个 crops,平均每张扫描 56.4 个。这个数字本身就说明了报纸版面的复杂度。
只输出页级文本不够,因为下游研究需要知道:
- 🧩 这段文本是正文、广告、标题、照片说明、漫画还是 masthead?
- 🗣️ 它是什么语言?
- 🧠 里面有哪些命名实体和主题?
- 📖 页面内和跨栏目的阅读顺序是什么?
- 🔎 能否用 embedding 做容错检索和聚类?
这些问题的共同载体不是页,而是 crop。只要 crop 边界、坐标和 provenance 保住了,后续过滤和重建才有基础。
它的思路是什么?
整条管线从 YOLO26x 版面分割开始。模型输出 type-agnostic crop 边界,即先判断“这是一个版面单元”,再由后续模块决定它是文本、图像还是标题。
每个 crop 后续走多条并行标注:
- 📝 OCR:逐 crop 识别文本,并保留 dots.mocr 与 Tesseract 两种输出。
- 🏷️ 类型分类:文本分类器读 OCR,图像分类器读视觉特征,输出 Content、Advertisement、Section heading、Photograph/illustration、Cartoon、Masthead、Empty 等类型。
- 🌍 语言检测:处理多语混杂和低置信短文本,并有规则回退。
- 🧠 NER 与主题:抽取命名实体并输出主题标签。
- 📐 阅读顺序:根据栏目结构、位置和类型推断宏观与微观顺序。
- 🧷 embedding:为文本和图像生成向量,支持检索、聚类和比较。
为什么并行释放两个 OCR 版本?因为历史 OCR 没有单一最优引擎。dots.mocr 对某些视觉噪声更稳,Tesseract 成熟、透明且可本地复现。把两者都留给用户,比替用户做一次不可逆选择更负责。
这也让管线更像数据基础设施而不是黑箱产品:模块可替换,输出可比较,用户能按年代、语言、类型或质量重新过滤。
效果到底怎么样?
先看基础分割指标:precision 0.927、recall 0.910、F1 0.918,mAP@50 为 0.955,mAP@50-95 为 0.901。mAP 是不同置信度阈值下的平均检测精度;@50 表示 IoU 至少 0.5,@50-95 表示更严格的边界质量平均,越高越好。
| 项目 | 数值 |
|---|---|
| 输入扫描 | 1,473,635 |
| 输出 crops | 83,147,041 |
| 平均 crops / scan | 56.4 |
| dots.mocr tokens | 16.3B |
| Tesseract tokens | 14.7B |
| 阅读顺序 macro accuracy | 72.1% |
| 阅读顺序 micro accuracy | 80.8% |
| 租用计算成本 | 约 $25,000 |
mAP@50 与 mAP@50-95 差距小,说明显著框不只是粗略命中,边界质量也较高。这对重建栏目和阅读顺序很重要。
阅读顺序的 macro 与 micro 差异值得注意:micro 80.8% 高于 macro 72.1%,意味着局部相邻顺序比跨栏目全局顺序更稳。对长文章重建,应把顺序输出视为概率线索,而不是权威编辑稿。
dots.mocr 与 Tesseract 的 token 数差约 1.6B,但不能简单理解为质量差异。OCR hallucination、重复和空 crop 都会影响 token 计数;下游使用前仍需按 crop 抽样评估。
为什么你要关心?
如果你做历史 NLP、数字人文、档案检索或大规模文档语料,这条管线有几个设计点很值得抄。
- 🧱 以 crop 为一等对象:坐标、OCR、类型、语言、实体、主题、顺序和 embedding 挂在同一单元上,方便过滤和重建。
- 🔀 保留多个 OCR 输出:不同任务对噪声的容忍度不同,双输出让后续研究者能做对比和替换。
- 🧭 阅读顺序单独评估:版面分割好不等于顺序恢复好。macro/micro 分开报告,能暴露全局栏目顺序的弱点。
- 🔎 预计算 embedding:历史 OCR 噪声大,纯文本关键词检索容易漏;向量检索可以做容错补充。
从机构视角看,约 $25,000 的租用计算成本,换来 83M crops 和数十亿 token 的结构化数据。这不是一个实验室炫技项目,而是一套可复用的馆藏级生产流程。
理性看待
主要限制是 collection overfitting。模型和流程主要在 BPL 子集上开发测试,其他地区报纸、非英语排版、20 世纪后期版式或更差扫描可能显著不匹配。
报告没有给出全库 OCR 的代表性人工 CER/WER。16.3B tokens 证明规模,不证明可读性。按年代、语言、字号和扫描质量分层抽样,是使用前必须补的审计。
主题分类和 NER 也会继承历史语料与标注体系偏见;公版判断还存在司法辖区差异。我的建议是:用数据前先定义自己的过滤策略,并保留 crop 坐标和原始扫描 provenance,方便回查误判。
作者:lusca
版本:lusca-paper-blog v1.5.0
出处:https://github.com/yjmm10/lusca-skill/tree/main/skills/lusca-paper-blog