在科学论文中,图形通常是 PDF 文件,然后由 Latex 编译器编译成主文件。我正在尝试从 PDF 文件中提取此类数字。
在我开始探索这个话题之前,我对PDF格式知之甚少,如果我有任何误解,请见谅。
以公开的paper为例,我用文本编辑器打开文件观察,发现图形是如下图的Form Xobjects
152 0 obj
<<
/Type /XObject
/Subtype /Form
/FormType 1
/PTEX.FileName (./graphs/spectrum.pdf)
/PTEX.PageNumber 1
/PTEX.InfoDict 203 0 R
/BBox [135.2168 266.4003 592.6775 381.8708]
/Resources <<
/ProcSet [ /PDF /Text ]
/ColorSpace <<
/Cs1 204 0 R
>>/Font << /TT2 205 0 R>>
>>
/Length 1052
/Filter /FlateDecode
>>
stream
x½VËn7¼ó+:/{6ÖRdóm'N`Áß-ƒÓ"‚Xdòû®&çAíZk
xˆœN³º«ºÉ[zK·d™Š¡3yÇôñú‹þ£ó‹;Kû;²õïn/«3ÝPʦÎ>Ô¾ü€wªŽ×tõÍáIülõdó“x7š£üfÞ'rÆØ#§@Ó;mr‰ä8êì9©
ÙkÃi¶E¸îlžXlÝ·Õ–`»î¬¶èØ<ZWtJ¡md]šöeí¸ô†P?#€[e]Bôjqäl[µ€˜,TÔÞ8Gn²Y_¦í&O‹eÙo± fG3î9_“e¯®»ì´
#x9içí"RrZ^ˆÞRADµïm"—ÎSÛžf†&¾Ë ù™rUHyÚoò´XÚ~Hr·jB5{£QË~S|{0}E%p ÿ!ù[\\®(îòBÝb‰6r)Œ*1øÛÞ7YŸuŽ6‘KV—d˜ö7uTSŽñ å$S}Íx64O¯é…%žˆ\¶dßžebƒ‡¶´eÇ:‹÷W;e³S;I¥vøµ/ºöÁÐî†Îw;Fл+zGÃ?n 8~Â`høÓð†¨†'ú›voèõ®ú!ìÃQ`@xÙw8B¢êÇSì\hx?là㦿"XÉ=Û Eí©Wsê-Ƈ€4¢ôÇùœñ£äæœQËÞš8æ\ÜŽ9_õ(ç÷bUÇÚ“ÎlµwYfûñÉ~v~[²‘sPV?@® :¨<` €ÿ[¬H4èº/‡2œA—tHšK¬£c·ÂÈ€:
éöœÐ!k)5ÒêZ‘ÞçZC @¹i@‚¶-ðû÷”8ë´
(AÙ,¢Xq¤ÿïEIÉ:ù€¶~L ›’mi”´ùÒ’VÄ4¥äòg(AÎK‰`º³ äÉF ?,2U¨Ò"ØA°X‰Ê[¼|˜*%Ú]¥j©_>—.‰ƒQ²3:¸H6h `B“>Ä´R0¾àZÊrrtí˹Q¦µ`Æù×·/_:t¼„oOh_QêB‚ÌjH`…†ÜX(søàíùaø}õ“qª¦†6Õð ”Øz`@/*/6
\üV;š ÅC¥4qÒƒ²!àtÇY¶åÌÚg«’³µ”G«øwHbÀŽÒ_å„e% ä 0"‡oÓ®œºÒt14yXÏÁàà΂‹×|=æKÉ2ƒ}MW‹ŠÐâ„°
HQâ€?ú"X†ªÔј¨w`OPßÓ3); ‘‹‹URk·‡³éúØ üì:´[£›îÓBøBHâCú€ì‚È€æ¾mõgOÌÛOR›Œ
endstream
endobj
顾名思义,就是论文中的图1。然后,我尝试用
mutool extract paper.pdf
直接提取“graphs/spectrum.pdf”但只有字体文件。
然后我转向另一种方式——先渲染页面,然后使用“/BBox”属性提取像素图。我用
mutool run script.js
运行的脚本如下
car pdf_path = "paper.pdf"
var doc = new Document(pdf_path);
var page = doc.loadPage(1);
var submap = new Pixmap(DeviceRGB, [135, 266, 592, 381], true)
var dev = new DrawDevice(Identity, submap)
page.run(dev, Identity, true)
submap.saveAsPNG("result.png")
但是这样一来,结果 PNG 就不在正确的地方了(见下文)。现在我对 BBox 数字感到困惑......
预期结果:
我得到的结果:
总而言之,我的问题是:
一些说明:你的一些术语有点混乱。光栅图像保存在“Image Xobjects”中。 “Form Xobjects”包含通用的 PDF 操作符流,可以多次使用,或者因为它只是 PDF 制作者制作文件的最简单方法。当然,Form Xobject 可能会调用图像 xobjects(或其他形式的 xobjects!)。在 BBox 上,它指的是表单 xobject 的内容在其自身坐标系中的边界框,而不是其在页面上的最终位置。我不知道有任何将 xobjects 形式视为图像的“图像提取”软件。