Разбор PDF-файла позволяет получить один и тот же текст дважды на разных страницах

У меня есть файл PDF, который содержит 2 страницы. Когда я разбираю его своим парсером в Ojective-C, у меня возникает следующая ситуация.

Для первой страницы все в порядке, у меня есть текст, который должен быть (который я визуально вижу в читалках pdf, таких как Preview, Adobe reader ...). Для второй страницы у меня есть текст, который я вижу на второй странице, ПЛЮС часть текста с первой страницы, которой нет на второй странице.

Я пробовал с другими парсерами: pdftotext (xpdf), им удалось получить правильный результат. Pdfminer (на питоне) https://pypi.python.org/pypi/pdfminer/, Я получил тот же результат, что и я. Часть текста с первой страницы извлекается дважды.

Мой вопрос: как это может произойти? Вы когда-нибудь видели эту ситуацию? Если текст действительно присутствует на второй странице, то почему читатели pdf его не показывают? У вас есть какие-нибудь мысли по этому поводу?


person bob    schedule 03.06.2013    source источник
comment
Может быть, текст есть на странице, но не виден из-за: чего-то под названием Crop Box, чего-то под названием OCG... Может быть, текст белый на белом. Не видя фактического PDF, можно только догадываться, но возможных причин много.   -  person Bruno Lowagie    schedule 03.06.2013
comment
Пробовал открыть файл в Illustrator и в Acrobat Pro, ничего не увидел. Я также пытался выделить текст на второй странице, не более того, текст, который мы видим. Спасибо, что поделились своими мыслями. Дополнительные идеи приветствуются.   -  person bob    schedule 03.06.2013
comment
Я просмотрел ссылки в формате PDF, в моем PDF-файле нет OCG, так как это PDF-файл версии 1.4, а необязательное содержимое начинается только с версии 1.5. Я проверил свой словарь каталога документов, и у меня нет записи OCProperties.   -  person bob    schedule 03.06.2013
comment
Можете поделиться PDF?   -  person Bruno Lowagie    schedule 03.06.2013
comment
Я спрошу разрешения и вернусь к вам. Спасибо за помощь.   -  person bob    schedule 03.06.2013
comment
@BrunoLowagie Вот файл   -  person bob    schedule 04.06.2013
comment
Содержимое обеих страниц документа очень похоже. Единственными исключениями являются: а) первая страница содержит 30 BEAUTÉ ANIMALE, а вторая — 31 PRÉJUGÉS, и б) оставшийся текст смещается за пределы медиа-окна. Если вы хотите извлечь только то, что видно, вам нужно отфильтровать по области.   -  person mkl    schedule 04.06.2013


Ответы (1)


Я прогнал ваш файл через Acrobat (используя «Проверить документ»), и он говорит мне, что в нем есть какой-то скрытый текст. Взгляните на следующий снимок экрана:

введите здесь описание изображения

Текст, выделенный красным цветом на снимке экрана, отмечает то, что скрыто. Как указывает mkl, он присутствует СНАРУЖИ MediaBox, что делает его невидимым при просмотре документа в программе просмотра PDF. Это не значит, что текст есть. Если вы заглянете внутрь потока контента (что и делают синтаксические анализаторы), вы все равно найдете его.

Ваш парсер должен отбрасывать все, что находится за пределами MediaBox. Обычно есть такая возможность. Я знаю, что в iText есть такой; Я не знаю о других парсерах.

person Bruno Lowagie    schedule 04.06.2013