骨骼测量数据是动物考古学研究的基础,但散落在数百篇中文文献中,格式不一、难以复用。我们尝试用大语言模型驱动的自动化流程,从204篇PDF文献中批量提取骨骼测量数据。本文记录这次尝试的动机、方法、结果与反思。
一、为什么想这么做
做动物考古的人大概都有过这样的经历:写论文需要对比不同遗址的猪下颌骨尺寸,于是翻开十几篇文献,一篇一篇地从表格或正文里抄数据,再手动录入Excel。这个过程少则半天,多则几天。
骨骼测量数据的价值在于可比性。von den Driesch在1976年提出的标准测量体系(GL、Bp、Bd、SD等)至今仍是国际通用语言。理论上,只要大家都用同一套标准,不同遗址的数据就能放在一起比较,进而讨论家畜起源、种群交流、肉食消费策略等问题。
但现实是:数据散落在几百篇文献里,格式千差万别。
有的文献用规范的表格,VDD代码标注清晰;有的文献把测量值嵌在正文中,"标本最大长为38.52mm"这种写法;有的文献用全角数字,有的用半角;有的PDF能直接复制文字,有的是扫描图片,数字都粘不出来。
这些数据一旦进入文献,就几乎沉睡在那里了。没有人会重新去整理一遍——工作量太大,太枯燥。
这恰好是一个可以交给自动化来解决的问题。
二、怎么做的
整体思路
我们搭建了一条从PDF到结构化数据的流水线,核心思路是:
PDF提取文本 → 清洗OCR噪声 → 正则匹配测量数据 → 标准化 → 去重 → 输出
整个过程由大语言模型(Claude)辅助完成——不是让大模型"读懂"骨骼测量数据(它的幻觉风险太高),而是让它帮助编写和调试提取脚本。最终的数据提取完全由确定性的正则表达式执行,每一条数据都有据可查。
具体步骤
第一步:PDF转文本
使用PyMuPDF(fitz)库从PDF中提取文本。这一步的质量完全取决于PDF本身——如果是作者提交的Word排版文件直接转成的PDF,文本层完整,提取效果就很好;如果是扫描件,提取出来的就是一堆乱码和控制字符。
第二步:文本清洗
PDF提取的文本充满噪声,需要做几件事:
全角数字转半角("182.21" → "182.21") 去除PUA私用区字符(PDF字体映射错误产生的乱码) 清理数字中的空格("45. 7" → "45.7") 统一单位("毫米" → "mm")
这一步看似简单,实际上坑很多。比如PUA字符不能直接删除——如果它夹在两个数字之间("80"和".8"),删除后会变成"80.8",数值就错了。所以正确做法是替换为空格。
第三步:正则匹配
核心提取逻辑是用正则表达式匹配"变量名 + 数值 + mm"的模式。我们识别了几种常见格式:
骨体最大长(GL)149.99mm → 中文名(VDD代码)数值mm肩胛颈部最小长为21.69mm → 中文名为?数值mm最大长45.7,最大宽19.4mm → 逗号分隔的连续测量第四步:种属推断
大多数文献不会在测量表中标注种属(因为一个表就对应一个种属),但我们的提取是按段落进行的。通过在段落中搜索"家猪""黄牛""绵羊"等关键词,可以推断当前段落讨论的是哪个物种。优先匹配家养动物名称,避免"野猪"误匹配。
第五步:标准化与去重
将中文变量名映射到von den Driesch标准代码,按"文献+变量+数值+种属+元素"去重,最终输出结构化的CSV/Excel文件。
三、结果是什么
数量
种属分布
家猪占了半壁江山(56%),其次是黄牛(13%)和羊(8%)。这与中国动物考古学的研究侧重高度一致——猪是核心议题。
地理与时代
数据覆盖了从内蒙古哈民忙哈(新石器时代,549条)到云南河泊所(战国,414条)的广阔时空。新石器至战国时期的数据占约70%。
哪些文献提取效果好
提取效果最好的文献有三个共同点:
文本型PDF——不是扫描图片,文字可以直接复制 使用VDD标准代码——"最大长GL""近端最大宽Bp"这样的规范写法,让正则匹配非常可靠 行内描述式写法——"标本最大长为38.52mm"这种嵌在正文中的格式,比复杂表格更好提取
典型的成功案例:哈民忙哈(533条)、河泊所(414条)、大司空(317条)、西岔(247条)。
哪些文献提取失败
112篇文献返回了0条记录。最主要的原因是扫描版PDF导致数值丢失——大约占失败案例的一半。
具体表现为:文本中能找到"标本最大长为"这样的变量名,但后面紧跟的是一个控制字符(U+0003),数字完全消失了。银梭岛遗址的文献有1212个"毫米"关键词命中,但提取出0条数据,就是因为所有数字都被替换成了乱码。
其他失败原因包括:同位素分析论文本身没有骨骼尺寸数据、数据以散点图/箱线图呈现、仅统计百分比频率等汇总信息。
四、未来能怎么做
短期:补齐高价值文献
在112篇失败文献中,约有30篇原本包含丰富的测量数据,只是因为PDF质量问题没能提取。这些文献值得通过以下方式补录:
专业OCR:使用PaddleOCR等工具重新处理扫描版PDF,特别是针对表格结构的OCR 人工录入:对OCR也无法挽救的文献,由研究生协作完成数据录入
预计可以再增加500-1000条记录。
中期:推动数据开放
这次尝试最深刻的体会是:当前PDF发布格式对数据再利用极不友好。 花费大量精力提取的数据,很可能因为格式问题存在错误或遗漏。
如果文献发表时能同时附带一份结构化的测量数据(CSV或Excel),哪怕只有几列(标本号、种属、部位、VDD代码、数值mm),后续所有研究者都能直接使用。这件事对作者来说举手之劳,对整个领域的数据积累意义重大。
具体建议:
发表时附数据表:随论文提交原始测量数据的CSV/Excel附件 使用文本型PDF:排版软件直接导出,保留文字可复制性 统一VDD代码:采用von den Driesch标准变量名 避免全角数字:使用半角数字和半角句点
长期:建设开放数据库
如果上述习惯能够推广,就有望建立一个中国动物骨骼测量数据的开放数据库。参考国际上的zooarch.org和GBIF框架,采用Darwin Core标准字段,提供API接口供研究者查询和下载。
这样的数据库一旦建成,关于中国家畜起源、动物资源利用、区域间文化交流等宏观问题的讨论,将有更坚实的数据基础。
写在最后
这次尝试证明了一件事:用自动化手段从现有文献中挖掘结构化数据是可行的。 我们用不到一周的时间,从204篇文献中提取了3217条骨骼测量数据,覆盖92个遗址。如果靠人工逐篇录入,同样的工作量可能需要几个月。
但同时也暴露了一个更根本的问题:大量珍贵的测量数据被锁在PDF里,格式混乱、难以再利用。 自动化提取只能是权宜之计,长远来看,需要从数据发布的源头解决问题。
希望这次尝试能成为一个起点。
上面都是AI自己写的报告。
数据文件与提取脚本后续开源公布至github,如需获取请后台联系。但是都是屎山代码我也懒得整理了想用的请自便。
本文涉及的文献数据仅用于学术研究目的,所以github上也不会有pdf源文件。
token大致烧了40块钱,主要以deepseek-v4-pro为主,后续用了xiaomi-mimo-v2.5,就提取效果来说大差不差,但是速度mimo更快一些,而且还是免费的MAX计划,真香~
夜雨聆风