pdf2xml - extract text from PDF files and wraps it in XML
pdf2xml [OPTIONS] pdf-file > output.xml
For more information, see the man-pages of the command-line tool pdf2xml. Using pdf2xml as a library is possible via the pdf2xml function:
pdf2xml
use Text::PDF2XML my $xml = pdf2xml( $pdf_file, %options ); pdf2xml( $pdf_file, output => \*STDOUT, %options ); pdf2xml( $pdf_file, output => 'file.xml', %options ); %options = ( conversion_tool => 'pdfXtk', # use pdfXtk (default = 'tika') keep_vocabulary => 1, # don't reset the vocabulary vocabulary => 'filename', # plain text file vocabulary_from_pdf => 0, # skip pdftotext vocabulary_from_raw_pdf => 0, # skip pdftotext -raw vocabulary_from_tika => 1, # read voc from Apache Tika java => '/path/to/java', # java binary java_heap => '8g', # default = 1g split_into_characters => 1, # split into characters detect_languages => 1, # enable language detection keep_languages => 'en', # only keep English sentences lowercase => 0, # switch off lower-casing dehyphenate => 0, # switch off de-hyphenation character_merging => 0, # skip char merging paragraph_merging => 0, # skip paragraph merging request_timeout => 180, # server request timeout (Tika) verbose => 1 # verbose output ); pdf2xml( $pdf_file, output => 'file.xml', %options );
Note that the options stay for the next pdf2xml call! You need to overwrite them if you want to change the behaviour in subsquent calls while the libraray is loaded!
Extract text from PDF using external tools and some post-processing heuristics. Here is an example with and without post-processing:
raw: <p>PRESENTATION ET R A P P E L DES PRINCIPAUX RESULTATS 9</p> clean: <p>PRESENTATION ET RAPPEL DES PRINCIPAUX RESULTATS 9</p> raw: <p>2. Les c r i t è r e s de choix : la c o n s o m m a t i o n de c o m b u s - t ib les et l e u r moda l i t é d ' u t i l i s a t i on d 'une p a r t , la concen t r a t ion d ' a u t r e p a r t 16</p> clean: <p>2. Les critères de choix : la consommation de combustibles et leur modalité d'utilisation d'une part, la concentration d'autre part 16</p>
Character merging heuristics are very simple. Using the longest string forming a valid word from the vocabulary may lead to many incorrect words in context for some languages. Also, the implementation of the merging procedure is probably not the most efficient one.
De-hyphenation heuristics could also be improved. The problem is to keep it as language-independent as possible.
Apache Tika: http://tika.apache.org
The Poppler Developers - http://poppler.freedesktop.org
pdfXtk http://sourceforge.net/projects/pdfxtk/
Copyright (C) 2013 by Joerg Tiedemann
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.
To install Text::PDF2XML, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Text::PDF2XML
CPAN shell
perl -MCPAN -e shell install Text::PDF2XML
For more information on module installation, please visit the detailed CPAN module installation guide.