我怎样才能提取Perl中的PDF文件中的文本?(How can I extract text fro

2019-06-26 02:31发布

我试图从使用Perl的PDF文件的文本。 我一直在使用pdftotext.exe从(使用Perl即命令行system功能)用于从PDF文件中提取文本,这种方法效果很好。

问题是,我们有像α,β和其他特殊字符中不被显示在生成的TXT文件中的PDF文件的符号。 另外一些额外的空间正在文本随机加入。

有没有更好的,更可靠的方式来从PDF文件中提取文本,使得文本将包括像α,β等,并文本将正好在PDF文本匹配的所有符号(即没有多余的空格)?

Answer 1:

这些模块可以从acheive PDF中提取文本

PDF :: API2

CAM :: PDF

CAM :: PDF :: PageText

从CPAN

   my $pdf = CAM::PDF->new($filename);
   my $pageone_tree = $pdf->getPageContentTree(1);
   print CAM::PDF::PageText->render($pageone_tree);

该模块试图提取PDF页面顺序的文字。 这不是一个稳定的工艺,如PDF文本以任意顺序图形布局。 该模块使用一些启发式方法来猜测下一个什么其他文本什么文云,但可以很容易地被愚弄,比如说标,非水平文本,在字体的变化,表单字段等。

所有这些免责声明不谈,它是从一个简单的PDF文件中的文本的快速转储有用。



Answer 2:

你可能永远不会得到适当的解决您的问题。 应用了字体的PDF格式可以编码文本或作为ASCII值,或者它可以编码它作为一个位图。 如果创建了PDF的工具决定编码特殊字符作为位图,你会倒霉的(除非你当然要进入OCR解决方案)。



Answer 3:

我不是一个Perl的用户,但我想,你就很难找到比pdftotext更好的自由文本提取。

pdftotext通常识别非ASCII字符精细,是有可能它的提取他们确定,但应用程序,你正在使用查看文本文件没有使用正确的编码? 如果在Windows pdftoetxt是一样的我的Linux系统上的,则默认为出口为UTF-8。



Answer 4:

有getpdftext.pl ; 部分CAM :: PDF 。



Answer 5:

嗯,我试过2-3 Perl模块像CAM :: PDF,API2但问题依旧! 我解析包含主要页面的PDF文件。 凸轮或API2解析纯文本非常好。 然而,它们不能够解析代码段[代码段通常是在不同的字体和编码比纯文本]。



Answer 6:

PDF2TXT.py这是我使用的东西,虽然它是Python的,它完美的作品。

http://www.unixuser.org/~euske/python/pdfminer/index.html



Answer 7:

詹姆斯·希利是正确的。 尝试后CAM :: PDF和PDF :: API2,其中前者我已经有一些成功的文本阅读,下载pdftotext对我的一些实现伟大的工作。

如果在Windows这里去下载xpdf预编译的二进制: http://www.foolabs.com/xpdf/download.html

然后,如果你需要使用perl的系统内运行此,例如,:系统( “C:\工具\ xpdfbin双赢-3.04 \ bin64适用\ pdftotext.exe $ SAVENAME”);

其中$ SAVENAME是你的PDF文件的完整路径。

这种希望给你留下一个文本文件,你可以打开并在Perl解析。



Answer 8:

我想这个模块,对于PDF文件的特殊字符工作正常..

!/usr/bin/perl
use strict;
use warnings;
use PDF::OCR::Thorough;

my $filename = "pdf.pdf";

my $pdf = PDF::OCR::Thorough->new($filename);
my $text = $pdf->get_text();
print "$text";


Answer 9:

看看PDFBox的 。 这是一个库,但我认为它也附带了一些工具来进行文本提取。



文章来源: How can I extract text from a PDF file in Perl?