Как я могу прочитать PDF с Itext? - PullRequest
0 голосов

Теперь у меня ошибка: 08 мая 2018 12:27:47 toUnicode

ПРЕДУПРЕЖДЕНИЕ. Нет шрифта Unicode для CID + 88 (88) в шрифте 404198E5f54TimesNewRoman

И пустой результат. Если понадобится, могу дать файл.

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Ваш образец PDF не содержит информации, необходимой для извлечения текста.

В документе используются подмножества шрифтов со специальным кодированием: первый глиф соответствующего шрифта, используемого на странице, кодируется некоторым начальным значением n, следующий используется, другой глиф n+1, следующий используется, другой глиф на n+2, ...

например. enter image description here в шестнадцатеричном формате кодируется 000a 000b 000c 000d 000e 000f 0010 для первого слова и 0011 0012 0013 000c 000d 0010 0014 0015 0016 для второго слова плюс двоеточие. Во втором слове можно узнать коды 000c, 000d и 0010, соответствующие глифам, уже использованным в первом слове.

Очевидно, что эта кодировка без какой-либо дополнительной информации не позволяет извлекать текст, как программа должна отображать эти значения в Unicode?

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

Таким образом, ваш файл не позволяет извлекать текст, вам нужно использовать OCR.

0 голосов
/ 08 мая 2018

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

Например:

12334 54637

Возможное представление:

Hello World

Где у вас есть следующее отображение:

`1` = `H`
`2` = `e`
`3` = `l`
`4` = `0`
` ` = ` `
`5` = `W`
`6` = `r`
`7` = `d`

Когда вы смотрите на страницу как на человека, вы видите «Hello World», но когда машина смотрит на синтаксис страницы, она видит «12334 54637», и это также то, что вы получаете, если извлекаете контент без используя отображение toUnicode.

Отображение, которое я только что описал (1 = H, 2 = e, 3 = l, ...), хранится в объекте, который отображает символы, используемые на странице с символами Юникода. Если эта карта отсутствует, то нет способа правильно извлечь содержимое.

Указанная вами ошибка Нет сопоставления Unicode для CID + 88 (88) в шрифте 404198E5f54TimesNewRoman сообщает, что в вашем PDF отсутствует информация, поэтому вы не можете получить надежный результат. Вы можете видеть правильный текст своими человеческими глазами, но машина не может преобразовать текст в полезную строку.

Если этот ответ вас не устраивает, поделитесь PDF-файлом, чтобы мы могли доказать, что этот ответ правильный. Также: вы не упоминаете, какую версию iText вы используете. Старые версии обычно не так хороши для извлечения текста по сравнению с более свежими версиями (iText 7.1.2 - самая последняя версия).

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