У меня есть набор pdf-файлов, из которых я хочу обрабатывать (VB.NET) только те, которые не доступны для текста, не могли бы вы рассказать мне, как это сделать?Как определить, является ли PDF доступным для текста или не текстовым, доступным для поиска?
ответ
Я думаю, что этот вариант может быть вашим рассмотрением, хотя я еще не тестировал код, но я думаю, что это можно сделать, прочитав свойства для каждого файла PDF, который вы хотите продолжить.
Вы можете проверить эту ссылку:
http://www.codeguru.com/columns/vb/manipulating-pdf-files-with-itextsharp-and-vb.net-2012.htm
Вы должны прочитать свойства производителей сразу же после его исходили. Это всего лишь пример. Но мой совет, пожалуйста, укажите здесь свой код, чтобы мы могли попытаться помочь вам. Bless you
Это огромная, но полезная, я пройду через нее. Благодарю. – Trupti
Вообще говоря, способ сделать это - открыть каждую страницу и разорвать поток контента и посмотреть, выполняются ли какие-либо текстовые операторы, размещающие текст на странице.
Позвольте мне объяснить, что это означает - PDF-документ - это небольшой язык RPN, который содержит операции, которые каким-либо образом отмечают страницу. Например, вы можете увидеть что-то вроде этого:
BT 72 400 Td /F0 12 Tf (Throatwarbler Mangrove) Tj ET
Что означает:
- Начните текстовую область
- Установите положение текста базовой линии до (72, 400) в формате PDF единиц
- Установите шрифт ресурса с именем F0 от текущей страницы словаря ресурсов шрифта
- Draw текст «Throatwarbler Mangrove»
- Конец текстовой области
Таким образом, вы можете попробовать короткие порезы
- ли моя страница словаря ресурс содержит шрифты?
В некоторых случаях это не удастся, поскольку некоторые инструменты генерации PDF помещают шрифты в словарь и не используют их (ложноположительно). Он также будет терпеть неудачу, если содержимое страницы содержит объект формы XObject, который содержит текст (false negative).
- В потоковом потоке моей страницы есть операторы BT/ET?
Это поможет вам приблизиться, но не удастся, если в них нет содержания (ложно положительный), или если они отсутствуют, но есть объект формы XObject, который содержит текст (false negative).
Итак, нужно сделать весь поток контента всей страницы, включая рекурсию на всех XObject для поиска текстовых операторов.
Теперь есть другой подход, который вы можете использовать с помощью моего программного обеспечения Atalasoft (отказ от ответственности, я работаю для Atalasoft и написал большую часть кода обработки PDF, я также работал над версиями Acrobat 1-4). Вместо того, чтобы спрашивать, содержит ли эта страница какой-либо текст, вы можете спросить: «содержит ли эта страница только одно изображение?"
bool allPagesImages = true;
using (Document doc = new Document(inputStream))
{
foreach (Page p in doc.Pages)
{
if (!p.SingleImageOnly)
{
allPagesImages = false;
break;
}
}
}
Который оставит allPagesImages с довольно приличной признак того, что каждая страница имеет все изображения, которые, если вы хотите, чтобы OCR является не для поиска документов, вероятно, что вы действительно хотите.
Нижняя сторона заключается в том, что это будет очень высокая цена для одного предиката, но также дает вам растеризатор PDF и возможность извлекать изображения непосредственно из файла.
Теперь, я не сомневаюсь, что твердый инженер мог проложить свой путь через спецификацию PDF и написать некоторый код для расширения iTextPdfSharp для выполнения этой задачи. Я думаю, что если я при этом я мог бы написать этот предикат через несколько дней, но я уже знаю большую часть спецификации PDF. Так что это может занять вас больше, чем две недели до месяца. Так что ваш выбор.
- 1. Определить, является ли каталог доступным для записи
- 2. Определить, если файл является доступным
- 3. Как определить, является ли мой клиент доступным для моего сервера?
- 4. Является ли каталог НЕ доступным для записи
- 5. Является ли IWavePlayer.PlaybackStopped доступным?
- 6. Является ли определение доступным для Qt gui?
- 7. Является ли ресурс цветным или доступным?
- 8. Проверьте, является ли каталог доступным для чтения
- 9. Является ли html5lib доступным для вредоносного ввода?
- 10. Как определить, доступен ли PDF для поиска или нет
- 11. Является ли IClientMessageInspector доступным для разработки WP7?
- 12. Является ли .NET ImageAnimator доступным для C++?
- 13. Является ли YAHOO.widget.DS_XHR доступным для пересылки данных?
- 14. Является ли токен доступа доступным?
- 15. Является ли Google GCM доступным?
- 16. Проверьте, является ли window.onerror доступным или нет
- 17. Является ли хранилище svn доступным для просмотра (или должно быть)?
- 18. Как сделать загрузочный бутстрап доступным для поиска?
- 19. Сделать файл доступным для поиска по Windows
- 20. Является ли файловым накопителем доступным?
- 21. Является ли доступным для хранения Haskell доступным для использования цветной логгер?
- 22. делает IPTC доступным для поиска данных
- 23. Сделать Envs доступным для возвышенного текста
- 24. Сделать MP3 доступным для поиска в php
- 25. Является ли имя приложения доступным как переменная?
- 26. C# .NET - как определить, является ли каталог доступным для записи, с или без UAC?
- 27. Является ли Clustering для Influxdb доступным для Windows
- 28. Как проверить, является ли файл доступным для записи (CLI)
- 29. Определение того, является ли каталог доступным для записи
- 30. Является ли устаревший winsock доступным для приложений для магазинов Windows?
Что вы пробовали? Люди с большей вероятностью окажут помощь, если вы продемонстрируете некоторые усилия либо исследования/кода, либо еще лучшего, но оба. – jordanhill123
Некоторые люди говорили о проверке свойства имени шрифта pdf-файла, но он кажется таким же, как для поиска, так и для нетекстового поиска. – Trupti