Эта проблема очень похожа на ту, что обсуждалась в этом ответе, и внешний вид пример документа здесь также напоминает документ здесь.
Как и в случае с документом в другом вопросе, карта ToUnicode шрифта сценария деванагари, используемого в этом документе, сопоставляет несколько совершенно разных глифов с идентичными кодовыми точками Unicode. Таким образом, извлечение текста на основе этого сопоставления обречено на неудачу, и большинство средств извлечения текста полагаются на эту информацию, особенно при отсутствии записи шрифта Кодировка, как здесь.
Некоторые экстракторы текста могут использовать сопоставление глифа с Unicode, содержащееся во встроенной программе шрифтов (если она присутствует). Но проверка этого сопоставления в программе шрифтов Devanagari, используемой в этом документе, показывает, что она связывает большинство глифов с U+f020 по U+f062 с именем «uniF020» и т. д.
Эти кодовые точки Unicode расположены в Области частного использования Unicode, т. е. они не имеют стандартизированного значения, но приложения могут использовать их по своему усмотрению.
Таким образом, экстракторы текста, использующие сопоставление Unicode, содержащееся в программе шрифтов, также не будут сразу выдавать разборчивый текст.
Тем не менее, есть один факт, который может помочь вам в основном автоматизировать извлечение текста из этого документа: один и тот же объект PDF ссылается на шрифт Devanagari на нескольких страницах, поэтому на всех страницах, ссылающихся на один и тот же Объект PDF тот же исходный идентификатор символа или та же кодовая точка Unicode для частного использования программы шрифта относятся к одному и тому же визуальному символу. В случае с вашим документом я насчитал только 5 копий шрифта.
Таким образом, если вы найдете экстрактор текста, который либо возвращает идентификатор символа (игнорируя все карты toUnicode), либо возвращает кодовые точки Unicode для частной области использования из программы шрифта, вы можете использовать его вывод и просто заменить каждую запись в соответствии с несколькими картами.
Я еще не использовал такой экстрактор текста, поэтому я ничего не знаю в контексте Python. Но кто знает, возможно, pdfminer или любому другому подобному пакету можно указать (некоторым образом) игнорировать вводящую в заблуждение карту ToUnicode, а затем использовать, как описано выше.
person
mkl
schedule
10.08.2015