ARTICLE · 1103076
让 AI 从论文里提图:找到图注,不等于找到图
匿名 · 电力电子方向在读博士 · IEEE 期刊审稿人
读论文时想把一张电路图、一条效率曲线挪进自己的笔记或汇报里,很多人的第一反应是"让工具自动把图抠出来"。这件事听起来是纯技术活:PDF 里的图有图注、有位置,按图注定位裁出来不就行了。
我做了一版这样的提取脚本,跑完几十篇论文之后得到一个反直觉的结论:找到图注和找到图,是两件不同的事。更麻烦的是,它出错的方式全都长得像成功。脚本会正常打印"共 N 张图"然后退出,图里少了一半、裁成一片空白、或者内容被当成白边裁掉,都不会报一个错。
所以提图能不能交给自动化,不取决于工具强不强,取决于两件事:你有没有一组自己实测过的判据,以及你愿不愿意逐张人眼看。
最开始我用的判据是标点:真图注的数字后面带句点(Fig. 2. Proposed system),正文引用不带(Fig. 2 shows ...)。这条规则在大多数期刊上确实好使。
然后遇到一篇,图注写法是 Fig. 1 (a) Conventional ...,数字后面直接跟子图标签,没有句点。按标点判,这一篇的图注一张都认不出来,脚本"成功"地返回了 0 张图。这不是崩溃,是它安静地什么都没找到。
后来把判据换成位置判据:不看标点,看图注上方一小段距离内有没有水平重叠的图形元素。正文里的 Fig. 2 shows ... 上方是别的文字或上一段,不会有图形;真图注上方必定紧贴着图。这一条比标点、比维护一长串动词列表都稳。
有一条实测值必须容忍:图注文字块与图区的边界框经常互相重叠十来磅(图块自带留白,或者图注把图里的子标签并了进来)。所以筛图区时,上边界要用图注的底边而不是顶边,否则主图元素会被整块误杀,一张都出不来。
脚本不会告诉你它错了,只会给你一个尺寸数字。下面这几类都是实测遇到过的:
这五条有一个共同点:它们都不抛错。"空白图"和"这个位置本来没内容"在输出上长得一模一样;"裁掉白边"和"裁掉内容"在尺寸数字上也分不出来。
从这件事里我抽出一条可迁移的做法:任何"自动提取"的判据,先拿一份已知答案的样本测一遍。
具体到这里就是:提图之前先自己翻一遍论文,手数一下大概有几张图、哪张是真要的,留作对照答案;再让脚本跑同一篇,两边对不上,就说明判据有问题,而不是论文有问题。
反向的检验同样重要。脚本说"没有"的时候,要确认是真的没有,而不是它没找到。这和判断一个长任务是不是卡死是同一类问题:找不到输出,不等于没有输出。
顺带一个只在批处理时才会露头的坑:脚本的临时文件路径如果不带进程号,同时跑两篇就会互相抢同一个文件,报"权限拒绝"。这类只在并发下出现的毛病要在一开始就排掉,否则几十篇跑一半才炸。
提图之前先手数一遍:这篇大概几张图、哪张是真要的,留作对照答案。 判图注真伪别用标点,用位置:看图注上方是否紧贴图形元素。 输出必须带编号,靠跳号发现整张漏图;出图后每一张都过一眼,不放过任何一个"过扁 / 过高 / 空白"的尺寸告警。 裁白边按通道最小值判,不按亮度;彩色图与黑白图共用一套阈值。 把最后一关留给自己:自动提图负责把候选图摆到你面前,验收永远是人的事。
你有没有被这类"看起来正常"的自动结果坑过?欢迎留言说说。