我试图从使用Perl的PDF文件的文本。 我一直在使用pdftotext.exe
从(使用Perl即命令行system
功能)用于从PDF文件中提取文本,这种方法效果很好。
问题是,我们有像α,β和其他特殊字符中不被显示在生成的TXT文件中的PDF文件的符号。 另外一些额外的空间正在文本随机加入。
有没有更好的,更可靠的方式来从PDF文件中提取文本,使得文本将包括像α,β等,并文本将正好在PDF文本匹配的所有符号(即没有多余的空格)?
我试图从使用Perl的PDF文件的文本。 我一直在使用pdftotext.exe
从(使用Perl即命令行system
功能)用于从PDF文件中提取文本,这种方法效果很好。
问题是,我们有像α,β和其他特殊字符中不被显示在生成的TXT文件中的PDF文件的符号。 另外一些额外的空间正在文本随机加入。
有没有更好的,更可靠的方式来从PDF文件中提取文本,使得文本将包括像α,β等,并文本将正好在PDF文本匹配的所有符号(即没有多余的空格)?
这些模块可以从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文件中的文本的快速转储有用。
你可能永远不会得到适当的解决您的问题。 应用了字体的PDF格式可以编码文本或作为ASCII值,或者它可以编码它作为一个位图。 如果创建了PDF的工具决定编码特殊字符作为位图,你会倒霉的(除非你当然要进入OCR解决方案)。
我不是一个Perl的用户,但我想,你就很难找到比pdftotext更好的自由文本提取。
pdftotext通常识别非ASCII字符精细,是有可能它的提取他们确定,但应用程序,你正在使用查看文本文件没有使用正确的编码? 如果在Windows pdftoetxt是一样的我的Linux系统上的,则默认为出口为UTF-8。
有getpdftext.pl ; 部分CAM :: PDF 。
嗯,我试过2-3 Perl模块像CAM :: PDF,API2但问题依旧! 我解析包含主要页面的PDF文件。 凸轮或API2解析纯文本非常好。 然而,它们不能够解析代码段[代码段通常是在不同的字体和编码比纯文本]。
PDF2TXT.py这是我使用的东西,虽然它是Python的,它完美的作品。
http://www.unixuser.org/~euske/python/pdfminer/index.html
詹姆斯·希利是正确的。 尝试后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解析。
我想这个模块,对于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";
看看PDFBox的 。 这是一个库,但我认为它也附带了一些工具来进行文本提取。