我有一个pdf,只包含文字,没有特殊字符或图像等。 是否有任何Perl模块(看着cpan无济于事)帮我逐行解析每个页面? (将PDF转换为文本会产生错误结果和不可解决的数据)
谢谢,
答案 0 :(得分:6)
当我想从PDF中提取文字时,我会使用pdftohtml
输出选项将其提供给-xml
(Poppler的一部分)。这将生成一个XML文件,我使用XML::Twig(或您喜欢的任何其他XML解析器除XML :: Simple)进行解析。
The XML format相当简单。您将获得PDF中每个页面的<page>
元素,其中包含描述所用字体的<fontspec>
元素以及每行文本的<text>
元素。 <text>
元素可能包含用于粗体和斜体文本的<b>
和<i>
标记(这就是为什么XML :: Simple无法正确解析它)。
您需要使用top
标记的left
和<text>
属性才能按正确顺序排列,因为它们不一定是从上到下排放的订购。坐标系在页面的左上角有0,0,向下和向右为正。尺寸采用PostScript点(每英寸72点)。