В комментарии вы привели пример:
Я прилагаю файл pdf. Например, строка АЛЛЕРГИЯ ПЫЛЬЦЫ не анализируется правильно.
В вашем PDF-файле заголовок 11. АЛЛЕРГИЯ ПЫЛЬЦЫ нарисован с помощью этой команды:
<003900390048000300130012000f000f0008001100030004000f000f00080015000a001c> Tj
Активный шрифт, когда он нарисован, представляет собой составной шрифт с кодировкой Identity-H, картой ToUnicode без сопоставлений и Adobe-Identity-0 strong> 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