Задать вопрос
antonydevanchi
@antonydevanchi
10 лет в айтишке

Как с помощью PHP можно распарсить PDF?

Задача: открыть документ и получить удобоваримый текст.
Опробовано: всё. Действительно всё, у меня весь гугл в сиреневых ссылках и даже контекстная реклама меня уже жалеет и предлагает купить ридер пдф книг.

Помимо PHP готов использовать любую другую технологию которая даст гарантированный результат. Но все же не хотелось бы уходить от родного для проекта языка.

Хардкорный вариант с написанием парсера с нуля по спекам формата не особо желателен в силу запутанности формата и зоопарка версий.
  • Вопрос задан
  • 16084 просмотра
Подписаться 9 Оценить 1 комментарий
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 8
@egorinsk
Как вы себе представляете такое преобразование, если в PDF текст хранится строками с определенными координатами, а не абзацами, например? Также текст может храниться картинкой или векторным форматом. Таблицы хранятся набором кусков текста и линиями. Заголовок — просто строка текста чуть большего размера.

Чтобы восстановить логическую структуру текста, надо систему вроде той, которая используется в продуктах fineReader. Систем эта сложная и на ее разработку у Abbee ушла куча денег, вряд ли вы сможете решить задачу проще. А без этого максимум, что вы можете вытащить из файла — это набор блоков вида «строчка такого-то текста расположена по таким-то координатам». Текст может быть разбит переносами.

Абзацы, конечно, еще можно из этого как-то восстановить, выстроив строчки по возрастанию координат, но переносы останутся, а любые нестандартные вещи, вроде подписи к картинке, будут ломать этот алгоритм.

Резюмируя, выберите другой исходный формат, или откажитесь от мысли преобразовать PDF в осмысленный текст, преобразуйте его в картинку например. Иначе вы всю жизнь будете дописывать костыли, как только кто-то захочет подснуть вашей системе текст, сверстанный другим способом.
Ответ написан
@plaha
А если использовать сторонний софт через exec() из php? Транслятор pdf в txt, например
Ответ написан
Skull
@Skull
Я с помощью pdftohtml конвертировал в XML. Далее c помощью SimpleXMLElement спарсивал 3х страничные оглавления из полученного документа.
Или у вас документ изначально похож на plain text загнанный в pdf
Ответ написан
Комментировать
KEKSOV
@KEKSOV
Похожий вопрос обсуждалась тут. К сожалению, автор вопроса никак не прокомментировал применимость приведенных в ответах утилит. Возможно, имеет смысл написать ему личное сообщение с аналогичным вопросом, вдруг, он продвинулся в положительную сторону.
Ответ написан
oENDark
@oENDark
Попробуйте конверт из pdf -> excel, а там уже есть парсеры excel самые разные
Ответ написан
Комментировать
asm0dey
@asm0dey
Можно запустить демон опеноффиса, он умеет конвертировать pdf в html, насколько я помню. Или в RTF.
Ответ написан
Комментировать
sivabur
@sivabur
Заблокировали просто так!
Класс pastebin.com/dvwySU1a
include('class.pdf2text.php');
$a = new PDF2Text();
$a->setFilename('Videographer_RFP.pdf'); //grab the test file at http://www.newyorklivearts.org/Videographer_RFP.pdf
$a->decodePDF();
echo $a->output();


Тока проблемы есть с некоторыми символами сам пока разбираюсь почему
Но тут будет чистый текст.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽