加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

无法从Perl中的pdf中读取文本

发布时间:2020-12-16 06:16:49 所属栏目:大数据 来源:网络整理
导读:我试图将pdf文件的文本内容读入Perl变量.从其他SO问题/答案我得到我需要使用CAM :: PDF的感觉.这是我的代码: #!/usr/bin/perl -wuse CAM::PDF;my $pdf = CAM::PDF-new('1950-01-01.pdf');print $pdf-numPages()," pagesnn";my $text = $pdf-getPageText(1
我试图将pdf文件的文本内容读入Perl变量.从其他SO问题/答案我得到我需要使用CAM :: PDF的感觉.这是我的代码:

#!/usr/bin/perl -w

use CAM::PDF;
my $pdf = CAM::PDF->new('1950-01-01.pdf');
print $pdf->numPages()," pagesnn";

my $text = $pdf->getPageText(1);
print $text,"n";

我尝试在this pdf file上运行它.Perl没有报告错误.第一个印刷声明有效;它打印“2页”,这是本文档中正确的页数.

下一个print语句不会返回任何可读的内容.以下是Emacs中输出的内容:

2 pages

^A^B^C^D^E^C^F^D^G^H
^D^A^K^L^C^M^D^N^C^M^O^D^P^C^Q^Q^C      ^D^R^K^M^O^D ^A^B^C^D^E
^F^G^G^H^E
^K^L
^M^N^E^O^P^E^O^Q^R^S^E
.... more lines with similar codes ....

有什么我可以做的工作吗?我不太了解pdf文件,但我认为,因为我可以使用Acrobat轻松复制和粘贴PDF文件中的文本,它必须被识别为文本而不是图像,所以我希望这意味着我可以提取它与Perl.

任何指导都将非常感谢.

解决方法

PDF可以有不同类型的内容.例如,PDF可能根本没有任何可读文本,只有位图和图形内容.您链接到的PDF中包含压缩数据.使用文本编辑器打开它,您将看到内容位于“/ Filter / FlateDecode”块中.也许 CAM::PDF不支持这一点. Google FlateDecode提供了一些想法.

进一步研究PDF,我发现它还使用嵌入式字体子集,并使用自定义编码.即使CAM :: PDF处理压缩,自定义编码也可能正在甩掉它.这可能会有所帮助:Web page from a software company,describing the problem

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读