Как разобрать .pdf файлы в Perl? - PullRequest
3 голосов
/ 12 мая 2011

Как разобрать .pdf файлы в Perl? Perl более эффективен, или я должен использовать любой другой язык?

Ответы [ 4 ]

9 голосов
/ 12 мая 2011

Когда я хочу извлечь текст из PDF-файла, я подаю его на pdftohtml (часть Poppler ), используя параметр вывода -xml. Это создает XML-файл, который я анализирую, используя XML :: Twig (или любой другой анализатор XML, который вам нравится, кроме XML :: Simple).

Формат XML довольно прост. Вы получаете элемент <page> для каждой страницы в PDF, который содержит элементы <fontspec>, описывающие используемые шрифты, и элемент <text> для каждой строки текста. Элементы <text> могут содержать теги <b> и <i> для текста, выделенного жирным шрифтом и курсивом (поэтому XML :: Simple не может его правильно проанализировать).

Вам необходимо использовать атрибуты top и left тегов <text>, чтобы получить их в правильном порядке, поскольку они не обязательно выводятся в порядке сверху вниз. Система координат имеет 0,0 в верхнем левом углу страницы с положительным направлением вниз и вправо. Размеры указаны в точках PostScript (72 точки на дюйм).

6 голосов
/ 12 мая 2011

Я лично использую CAM :: PDF.

my $doc=CAM::PDF->new($fileName) || die "$CAM::PDF::errStr\n"; CAM::PDF>asciify(/$pdfString);`

PDF-файлы предназначены не для синтаксического анализа, а для отображения / печати - таким образом, все всегда является ошибкой, и вполне возможно, что это невозможноразбирать, если все графика.
Хороший показатель, если вы можете скопировать и вставить содержимое из PDF-файла в редактор.Если это работает, значит, вы в бизнесе.

5 голосов
/ 12 мая 2011

Посмотрите на CPAN и, в частности, если вы хотите сделать OCR, см. PDF :: OCR2

4 голосов
/ 12 мая 2011

Я не знаю ни одного модуля, который анализирует, то есть, если вы извлекаете из них текст.Есть ряд модулей, которые позволяют вам манипулировать ими.Попробуйте PDF :: API2 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...