内容中心 › 公式
脚本跑完,输出一行:950 → 811。少了 139 个公式字形,14.6%。
第一反应是公式被译文吞了。把范围从整份文件缩到单页、再缩到单个 span,结论反过来:公式一个都没丢,是统计口径在骗我。
素材是 arXiv:1706.03762 那篇 15 页 Transformer 论文,原文 2.22MB,常规档译文 2.43MB,页数都是 15 页。数字全从两份 PDF 的对象层提取,口径写在文末。
| 指标 | 原文 | 译文 | 差异 |
|---|---|---|---|
| 页数 | 15 | 15 | 没变 |
| 文件体积 | 2.22 MB | 2.43 MB | +9.5% |
| 文字层字符 | 38,450 | 17,277 | 44.9% |
| 矢量绘制块 | 2,710 | 2,710 | 逐页相同 |
| 位图块 | 3 | 13 | +10 |
| 公式系列字形 | 950 | 811 | −139 |
字数那行不能用来判断公式,翻成中文必然掉一半。第四行才是关键:2,710 个矢量块,15 页逐页对下来完全相同。线、框、表格边、图里箭头,数量一个不差,位置也没挪——译文不是重画页面,是把原文对象搬过去、只换文字。
公式字体(CMR / CMMI / Symbol 系列)逐页数:p8 168→112,p3 51→12,p7 149→134,p5、p6 各差 12、11,合计 −139。
p3 掉得最狠,76% 没了:它的公式全嵌在正文行里,不像 p5、p6 独立成行。
p3 那句 LayerNorm 公式,原文是一个 span 走完,译文被切成好几段:
原文 CMR10 'LayerNorm('
译文 Times-Roman 'LayerN' + 'orm('
CMMI10 'x' + CMR10 '+' + Times-Roman '+ Sublayer('
三件事同时发生:单词被切成 LayerN 和 orm(;SubLayer 大小写变成 Sublayer;数字 6、512 从 CMR10 换成 Times-Roman。
脚本只数数学字体,字母数字一挪进 Times-Roman 就不计数了,139 个差值大半这么来的。
但也别急着说没事。斜体变量 x 还在 CMMI10,等号加号还在 CMR10,数学排版没被拍平成正文,这部分真保住了。损伤在切词和大小写:SubLayer 变成 Sublayer,粘进代码就是错的。公式用来看没问题,用来复制就有问题。
原文位图 3 张,译文 13 张,多出来的全在 p13、p14、p15,共 296 万像素;这三页恰好是矢量最密的三页,绘制块 624、1030、947。
这是转换侧对高密度矢量页做的栅格化保护:页数、内容不变,代价是那几页放大后偏软。它极易被误判成「公式被转成图片」。
1. 先对矢量块。 逐页比 get_drawings(),能对上说明骨架没重画。
2. 把字体算全。 只数数学字体,必然把「换字体」看成「丢字」。
3. 抽一句公式看 span 切分。 单词被切成两段、大小写被改,是重排的痕迹。
4. 看位图增量落在哪几页。 落在热力图、密集矢量页上属正常保护。
翻呗翻译支持 24 种语言,单文件 300MB / 1500 页,四档按页计费:常规 1、公式保留 5、版式精排 6、扫描件增强 9 积分每页,中英对照每页加 1。版式精排按原始边框重排表格、图注、双栏,不整页重画;扫描件按语种分 OCR 通道。
边界也讲清楚:手写体和竖排古籍识别率低;三栏以上版面可能错位;扫描件准确率整体比电子版低一档。上面这份是单栏电子版,属好处理的一类;双栏密排期刊版式,公式被切碎的几率更高。
公式能不能复制,比能不能看重要:要往 Word 里贴、往代码里抄,就按第三步抽一句试试。
---
取数口径:fitz 逐页取矢量块数、位图数、span 与字体字符数;公式字体按名称含 CMR / CMMI / Symbol / STIX / Math 计,脚本 tools/csdn_measure_vectors.py 可复现。