Когда вы говорите «парсинг 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) так, чтобы эти экстракторы текста работали правильно, либо просто извлечь байты из потока и перевести их самостоятельно.
Рабочий процесс будет выглядеть примерно так:
- Для каждого символа в шрифте, используемом в форме:
- отрисовывать его в PDF самостоятельно, используя те же версии LaTeK / GhostScript.
- Откройте PDF и найдите CharProc для этого конкретного известного символа.
- Сохраните этот поток вместе с известным символомter используется для его построения.
- Для каждого байта текста в PDF-файле, который нужно интерпретировать.
- Получите имя глифа для данного байта на основе существующего массива кодирования
- Получите поток "char proc" для этого имени глифа и сравните его с вашими известными символами proc.
ПРИМЕЧАНИЕ. Это можно переписать, чтобы сделать его более эффективным с некоторым кэшированием, но оно дает представление (надеюсь).
Все это требует довольно глубокого понимания.PDF и методы анализа.Но это может сработать.Может и не слишком ...