Как разобрать PDF с помощью символов Adobe CID

сообщество.

Я пытался разобрать PDF-документ с помощью нескольких инструментов. Например, pdfminer для Python, pdf-parse для Node.js, но ни один из них не может анализировать пространственные символы Adobe CID, и я получаю следующую последовательность.

(cid:411)(cid:579)(cid:556)(cid:851)(cid:411)(cid:579)

Есть ли инструмент, позволяющий анализировать эти символы?


person Denerator    schedule 24.07.2020    source источник
comment
Это не специальные символы Adobe, это cid, для которых PDF-файл явно не содержит информации, которой соответствуют коды символов Unicode. Также возможно, хотя и маловероятно, что в инструментах есть ошибка, но для проверки вашей необходимости поделиться PDF-файлом.   -  person mkl    schedule 24.07.2020


Ответы (1)


В комментарии вы привели пример:

Я прилагаю файл pdf. Например, строка АЛЛЕРГИЯ ПЫЛЬЦЫ не анализируется правильно.

В вашем PDF-файле заголовок 11. АЛЛЕРГИЯ ПЫЛЬЦЫ нарисован с помощью этой команды:

<003900390048000300130012000f000f0008001100030004000f000f00080015000a001c> Tj

Активный шрифт, когда он нарисован, представляет собой составной шрифт с кодировкой Identity-H, картой ToUnicode без сопоставлений и Adobe-Identity-0 ROS. По сути, все, что известно, - это то, что он нарисован по горизонтали и двухбайтовый. (Таким образом, в приведенной выше инструкции вы можете разбить шестнадцатеричную строку на подпоследовательности из 4 шестнадцатеричных цифр каждая, чтобы получить коды символов для всех глифов.)

Извлечение текста в соответствии с разделом 9.10.2 - Преобразование кодов символов в значения Unicode - спецификации PDF ISO 32000-1, поэтому для каждого глифа выполняется окончательный

Если эти методы не дают значения Unicode, невозможно определить, что представляет собой код символа, и в этом случае соответствующий читатель может выбрать код символа по своему выбору.

Таким образом, причина, по которой строка АЛЛЕРГИЯ ПЫЛЬЦА не анализируется правильно, просто заключается в том, что PDF-файл не содержит информации, необходимой для извлечения текста на основе только информации PDF.

Это также видно в Adobe Acrobat Reader, копирование и вставка этой строки также не дает ничего внятного.


Однако есть один вариант для правильного извлечения текста: вам нужен экстрактор текста, который выходит за рамки информации в синтаксисе PDF и во встроенную программу шрифтов для извлечения текста. Здесь действительно есть правильные сопоставления от глифа к кодовой точке Unicode.

Однако я не знаю, какие - если вообще есть - экстракторы текста на Python используют эту дополнительную информацию.

person mkl    schedule 30.07.2020