2013-06-03 1 views
0

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

Для первой страницы все в порядке. У меня есть текст, который у меня должен быть (что я визуально вижу в читателях в формате PDF, таких как Preview, Adobe reader ...). Для второй страницы у меня есть текст, который я вижу на второй странице PLUS - часть текста с первой страницы, которая не находится на второй странице.

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

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

+0

Возможно, текст присутствует на странице, но не отображается из-за: что-то называемое «Обрезка», что-то называемое «OCG», ... Может быть, текст белый на белом. Не видя фактического PDF, можно только догадываться, но есть много возможных причин. –

+0

Я попытался открыть файл в Illustrator и в Acrobat Pro, я ничего не увидел. Я также попытался выбрать текст на второй странице, не более, чем текст, который мы можем видеть. Спасибо, что поделились своими мыслями. Больше идей приветствуются. – bob

+0

Я посмотрел в PDF-ссылках, в моем PDF-документе нет OCG, так как это 1.4 pdf, а дополнительное содержимое начинается только в версии 1.5. Я проверил словарь каталога документов, и у меня нет записи OCProperties. – bob

ответ

2

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

enter image description here

текст красным цветом на скриншоте отмечает, что скрыто. Как показывает mkl, он присутствует вне медиабокса, что делает его невидимым при просмотре документа в программе просмотра PDF. Это не значит, что текст есть. Если вы заглянете внутрь потока контента (что и делают парсеры), вы все равно его найдете.

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

 Смежные вопросы

  • Нет связанных вопросов^_^