2016-09-23 7 views
1

Я недавно создал сервер Linux, чтобы иметь возможность конвертировать текстовые PDF-файлы в текст с помощью команды pdftotext, входящей в состав Xpdf, а также для преобразования PDF-файлов на основе изображений в текст с использованием комбинации gs (Ghostscript) и tesseract.Как различать «текстовые» PDF-файлы и «образные» PDF-файлы в PHP?

Оба решения работают очень хорошо, когда я уже знаю, является ли PDF текстовым или основанным на изображениях. Однако, чтобы автоматизировать процесс преобразования многих PDF-файлов в текст, мне нужно выяснить, является ли PDF текстовым или основанным на изображениях, чтобы я знал, какой набор процессов запускается в PDF-файле.

Есть ли какой-либо способ в PHP для анализа PDF-файла и рассказать, основан ли он на текстовой или графической основе, чтобы я знал, использовать ли на нем Xpdf или Ghostscript/Tesseract?

+3

Что делать, если есть комбинация обоих? – cmorrissey

+0

Происходит ли это, и если да, то достаточно ли запустить файл «pdftotext» Xpdf в файле? В любом случае, есть ли два или три разных типа PDF-файлов, мне нужно иметь возможность различать их, чтобы я знал, как их обрабатывать, чтобы получить текст. Благодарю. – HartleySan

+0

Я бы запускал оба сценария против PDF, тогда вам нужно сделать сравнение на выходе. – cmorrissey

ответ

0

Сравнение результата и принятия решения о том, является ли полученный текст из OCR-прогона тем же, что и выход из прогона Xpdf, является нетривиальным кветом. В случае текста OCRable PDF (например, очень маленьких букв), где текст может быть извлечен xpdf, вы даже закончите много ненужной тарабарщины.

Я предлагаю извлечь изображения из PDF-файлов и OCR только те, а не полный PDF-файл. Таким образом

  • Вам не нужно сравнивать тексты [1].
  • В зависимости от того, как изображения включены в PDF, вы также можете получить лучшие результаты распознавания.
  • Также вы избегаете ненужного текста OCRing, который содержится в виде чистого текста.

Как вы уже используете xpdf, вы можете использовать pdfimages -all для извлечения изображений.

[1] Это не соответствует действительности на 100%, так как PDF-файл может быть зажатым в формате PDF, где уже есть текстовый слой OCRed «позади» изображения.

+0

Извините, но я смущен тем, что вы рекомендуете. Должен ли я конвертировать все PDF-файлы в изображения, а затем OCR их без разбора или вы рекомендуете что-то еще? Процесс OCR с Tesseract выполняется очень медленно, поэтому я хотел бы избежать OCRing как можно большего количества PDF-файлов. – HartleySan

+0

@HartleySan Я хочу использовать инструмент для извлечения встроенных изображений и запускать инструмент OCR только на них. Я добавил несколько подробностей к моему первоначальному ответу. – tobltobs