Разбор PDF файлов - PullRequest
       3

Разбор PDF файлов

2 голосов
/ 10 июля 2011

Мне трудно разобрать файл PDF, созданный не на английском языке.Я использовал pdfbox и itext, но не смог найти там ничего, что могло бы помочь разобрать этот файл.Вот PDF-файл, о котором я говорю: http://prapatti.com/slokas/telugu/vishnusahasranaamam.pdf В PDF-файле говорится, что он создан с использованием шрифтов LaTeX и Tikkana.На моей машине установлен шрифт Tikkana, но это не помогло.Пожалуйста, помогите мне в этом.

Спасибо, K

1 Ответ

4 голосов
/ 12 июля 2011

Когда вы говорите «парсинг PDF-файлов», моей первой мыслью было, что рассматриваемый PDF-файл не открывался в различных средствах просмотра и библиотеках PDF-файлов, и поэтому был каким-то образом поврежден.дело вообще.Он прекрасно открывается в Acrobat Reader X. И затем я вижу текст на странице.

И когда я копирую / вставляю этот текст с первой страницы, я получаю:

Ûûp {¨¶ðQ {p {¨ | = {pÛû {¨> üb¶úN} l {¨d {p {¨>> Ûpû¶bp {¨} | = / } pT¶ =}Nm {Z {Úpd {m} a¾Ú} mp {Ú¶¨> ztNð {øÔ_c} m {Ð ¢ Á} = N {Nzt¶ztbm} ¥ Ázv¬b ÁÁÁ ÛûÁøÛûzÏrze¨ = ztTzv} lÛzt {¨d¨c} p {Ðu {¨½ÐuÛ½ {= Û Á {= Á Á ÁÛûb} ßb {q {d} p {¨ze = Vm {Ðu½Û {= Á

Это от Reader.

Большая часть текста в этом PDF-документе написана с использованием различных шрифтов типа 3.Эти шрифты утверждают, что используют «WinAnsiEncoding» (также известный как кодовая страница 1252) с массивом «Отличия».Этот массив разностей неправильный:

47 / BB 61 / BP / BQ 81 /C6...

Первое число - это заменяемая кодовая точка, второеэто имя символа, которое заменяет исходное значение в этой кодовой точке.

Нет таких имен символов, как BB, BP, BQ, C9 ... и так далее.Поэтому, когда вы копируете и вставляете этот текст, вы получаете вышеуказанный мусор.

Извините, но единственный надежный способ извлечь текст из такого PDF - это OCR (оптическое распознавание символов).

Эх ... Идея долгосрочной перспективы:

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

Получив эти известные потоки, вы можете сравнить их с потоками в PDF и использовать их для создания своей собственной таблицы перевода.

Выможет либо исправить существующие PDF [s] (изменив имена в словаре кодирования и записях charproc типа 3) так, чтобы эти экстракторы текста работали правильно, либо просто извлечь байты из потока и перевести их самостоятельно.

Рабочий процесс будет выглядеть примерно так:

  1. Для каждого символа в шрифте, используемом в форме:
    1. отрисовывать его в PDF самостоятельно, используя те же версии LaTeK / GhostScript.
    2. Откройте PDF и найдите CharProc для этого конкретного известного символа.
    3. Сохраните этот поток вместе с известным символомter используется для его построения.
  2. Для каждого байта текста в PDF-файле, который нужно интерпретировать.
    1. Получите имя глифа для данного байта на основе существующего массива кодирования
    2. Получите поток "char proc" для этого имени глифа и сравните его с вашими известными символами proc.

ПРИМЕЧАНИЕ. Это можно переписать, чтобы сделать его более эффективным с некоторым кэшированием, но оно дает представление (надеюсь).

Все это требует довольно глубокого понимания.PDF и методы анализа.Но это может сработать.Может и не слишком ...

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