Как узнать, что PDF-файл содержит только изображения или был сканирован OCR для поиска?
У меня есть куча файлов PDF, которые пришли из отсканированных документов. Файлы содержат смесь изображений и текста. Некоторые были отсканированы как изображения без распознавания текста, поэтому каждая страница PDF представляет собой одно большое изображение, даже если вся страница полностью текстовая. Другие были отсканированы с помощью OCR и содержат изображения и текст с возможностью поиска, где присутствует текст. Во многих случаях даже слова на изображениях были сделаны для поиска.
Я хочу сделать автоматизированный процесс распознавания текста во всех отсканированных документах с использованием OCR с помощью Acrobat 8 Pro, но я не хочу повторно распознавать файлы, которые уже были обработаны OCR в прошлом. Кто-нибудь знает, есть ли способ сказать, какие из них содержат только изображения, а какие уже содержат текст для поиска?
Я планирую сделать это в C# или VB.NET, но я не думаю, что возможность различать два типа файлов зависит от языка.
8 ответов
Отсканированные изображения, преобразованные в PDF, которые были впоследствии распознаны для обеспечения возможности поиска по тексту, обычно содержат текстовые части, отображаемые как "невидимые". Таким образом, то, что вы видите на экране (или на бумаге при печати), остается оригинальным изображением. Но при успешном поиске подсвечиваются попадания в невидимый текст.
Я бы порекомендовал вам взглянуть на инструменты командной строки, полученные из XPDF pdffonts(.exe)
, pdfinfo(.exe)
а также pdftotext(.exe)
, Смотрите здесь для загрузки: http://www.foolabs.com/xpdf/download.html
Пример использования pdffonts
:
C:\downloads\> pdffonts cisco-ip-phone-7911-guide6.1.pdf
name type emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
LGOKFL+Univers-BlackOblique Type 1C yes yes no 13171 0
LGOKGM+Univers-Black Type 1C yes yes no 13172 0
[....]
В этом PDF-файле используются шрифты (обозначенные столбцом "name"), встроенные в них (обозначенные "да" в столбце "emb") и используемые поднаборы шрифтов (обозначенные "да" в столбце "sub").
C:\downloads\> pdffonts examle1.pdf
name type emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
Univers-BlackOblique Type 1C yes no no 14 0
Arial TrueType no no no 15 0
Этот PDF-файл использует 2 шрифта (указаны в столбце "имя"). Шрифт "Universe-BlackOblique" полностью встроен (обозначается "да" в столбце "emb" и "нет" в столбце "sub"). Шрифт Arial также используется, но не встроен.
C:\downloads\> pdffonts examle2.pdf
name type emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
Этот PDF не использует ни одного шрифта и, следовательно, не имеет встроенного текста (так что OCR тоже).
Пример использования pdftotext
:
C:\downloads\> pdftotext ^
-layout ^
cisco-ip-phone-7911-guide6.1.pdf ^
cisco-ip-phone-7911-guide6.1.txt
Это извлечет все текстовые строки из PDF (пытаясь сохранить некоторое сходство с исходным макетом). Если в PDF нет текста, вы бы знали, что не было OCR...
Различные инструменты PDF могут сказать вам, есть ли текст. Некоторые доступны как элементы управления COM, и, возможно, даже.NET.
Откройте документ в акробате. Перейдите в Файл -> Свойства. Посмотрите в разделе "Дополнительно" и найдите производителя PDF. Если он читает что-то вроде "Захват бумаги...", значит, это было OCR'd.
Надеюсь это поможет.
Я использую Everything от VoidTools для поиска содержимого регулярных выражений в PDF-файлах. Любой PDF-файл без текста — хороший кандидат.
например
.pdf regex:content:^$
Это ищет все файлы с .pdf в имени и с пустым содержимым (
^$
означает: начало строки и и и строки без ничего между ними), альтернативно
regex:content:^(?![\s\S])
)
Извините, что выкопал старую ветку, но если вы нашли это, взгляните на мою ветку:
Пакетная программа OCR для PDF-файлов
Вы можете получить дополнительную информацию о файле PDF, скачав его в unix/linux/osx или открыв его как режим "rb" в python. (Конечно, это Python, и вы не хотели использовать это, но, возможно, у него есть что-то эквивалентное).
Используйте "dtsearch" для создания индекса для всех файлов PDF... затем "просмотрите файл журнала" процесса индексирования, чтобы проверить список файлов PDF, которые не были проиндексированы.
Apago pdfspy извлекает информацию из PDF в файл XML. Он включает в себя информацию о документе, включая изображения и текст. Для вашего проекта полезная информация включает в себя количество изображений и их размер, а также текст OCR (скрытый).
Очень низкотехнологичное решение: любой файл с отсканированным текстом, несомненно, будет содержать букву "а", поэтому выполните поиск по всему содержимому файла, которое не содержит букву aie "НЕ а". Любой файл, который появляется, не был бы OCR'd