Как мне изучить PDF, чтобы определить, является ли элемент текстом? - PullRequest
1 голос
/ 29 июня 2011

У меня есть PDF, и я хочу извлечь содержащийся в нем текст.Я пробовал несколько разных библиотек PDF, и все они в основном дают одинаковые результаты.При извлечении текста из двухстраничного документа, содержащего буквально сотни слов, возвращается только дюжина или около того слов из заголовка.

Есть ли способ определить, является ли текст, который я ищу, текстом илирастровое изображение текста?Я думаю о чем-то вроде «Инспектирующего элемента» Firebug, но на этом этапе я приму любое решение, которое скажет, на что я действительно смотрю.

Этот проект действительно не оправдывает попытки использоватьавтоматическое чтение печатного материалаИ хотя это простое решение, использование полей в PDF - это не вариант, так как генератор файла является третьей стороной.

Ответы [ 3 ]

1 голос
/ 29 июня 2011

Если Acrobat / Reader может выделить текст, то это текст.

Причины, по которым ваша библиотека не может найти нужный текст:

  1. Сложные / плохие шрифты или кодировки. Adobe может быть очень щадящим мусором, каким-то образом способным вывести Good Info.
  2. Текст может быть в аннотации, а не в содержимом страницы. Не имеет значения, какая программа анализирует поток контента, если вместо этого вам нужно просмотреть массив annot.
  3. Вы не назвали определенную библиотеку, поэтому возможно, что используемая вами библиотека не заглядывает внутрь форм XObject. Это маловероятно даже для зрелого API, но произошли странные вещи.

Если вы можете избавиться от копирования / пасты из Reader, просто идите по этому пути.

1 голос
/ 11 июля 2011

Вы пробовали Amyuni PDF Creator .Net ? Он позволяет перечислять все компоненты из указанной прямоугольной области страницы и проверять их тип из списка предопределенных типов. Вы можете запустить быстрый тест, используя пробную версию и следующий пример кода для извлечения текста:

// open a PDF file
axPDFCreactiveX1.Open(System.IO.Directory.GetCurrentDirectory()+"\\sampleBookmarks.pdf", "");
axPDFCreactiveX1.Refresh ();
String text = axPDFCreactiveX1.GetRawPageText (1);
MessageBox.Show (text);

Кроме того, он обеспечивает Тессеракт OCR интеграция в случае необходимости.

Отказ от ответственности: я являюсь частью команды разработчиков этого продукта.

0 голосов
/ 29 июня 2011

Проверьте этот сайт. Может содержать некоторые полезные фрагменты кода. http://www.codeproject.com/KB/cs/PDFToText.aspx

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