PDF 里真正装着什么,文字为什么按这个顺序出来
PDF 的一页是一段程序,而不是一个段落:用这种字体、在这些坐标上画出这个字符,然后画那张图片,再画一条线。人眼看到的阅读顺序并没有存在任何地方——它是从位置推断出来的。这里用的是一套 PDF 文字读取器,它沿着内容流走一遍,按页面绘制的顺序报告每一段文字,并在每行最后一段上带一个标记。
这个顺序在这个工具写出来之前就被量过,用的是一份六页、双栏的样本:12,833 个字符在 96 毫秒里输出,两栏是一栏接一栏到来的,而不是交错(60 次检查里只有一次跨栏切换),85 段文字带着行尾标记,重建出 65 行。所以这个工具跟随内容流,并用行尾标记来断行。按坐标对文字做聚类——另一种常见做法——会把任何故意放在基线之外的东西重排,比如图注或页边印章,而测量表明这里并不需要那样做。
你在别处会看到的另一种做法——把每一页栅格化再跑 OCR——对一份本来就有文字的文档来说更糟:它去猜本来可以精确读到的字符,分不清小写 l 和数字 1,还把一份可搜索的文件变成它的一张图片。