Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Парсинг PDF средствами PHP

23K
26 декабря 2011 года
rafaelkyrdan
123 / / 03.05.2011
Тема парсинг pdf файлов с помощью php. На форуме уже поднимались похожие темы:
http://forum.codenet.ru/threads/46351-PDFBox.-%D0%9F%D0%B0%D1%80%D1%81%D0%B8%D0%BD%D0%B3-PDF-%D1%84%D0%B0%D0%B9%D0%BB%D0%B0?highlight=%D0%BF%D0%B0%D1%80%D1%81%D0%B8%D0%BD%D0%B3+pdf
http://forum.codenet.ru/threads/32938-php-%D0%B8-pdf?highlight=%D0%BF%D0%B0%D1%80%D1%81%D0%B8%D0%BD%D0%B3+pdf
И гугл посоветовал такие темы изучить
xPDF
ZendPDF
GchostScript
ITextSharp
FPDI
Zend_Search_Lucene
PDFBOX
Вопрос кто использовал что ли бо и может посоветовать?
23K
26 декабря 2011 года
rafaelkyrdan
123 / / 03.05.2011
Собственно текст получил с помощью примера с php.net осталось мета теги получить.
23K
30 декабря 2011 года
rafaelkyrdan
123 / / 03.05.2011
Вот скрипт на котором я эксперементировал: для этого надо установить утилиту XPdf
с помощью которой можно вытягивать и мета теги и текст с пдф файла.


Код:
class PdfController extends CController
{
    public $layout='main';
    public $defaultAction='index';  
    private $pdfInfoPath = '/usr/bin/pdfinfo'; // полный путь к pdfinfo
    private $pdfToTextPath = '/usr/bin/pdftotext'; // полный путь к pdftotext
    private $name = '/test3.pdf';
       
    private $title = '';
    private $keywords = '';
    private $description = '';
    private $short_description = '';
    private $text = '';
   
    public function actionIndex()
    {

        $file_path = dirname(dirname(dirname(__FILE__))).'/download/'.$this->name;
        $pdfInfo = array();
        $strInfo = array();    
        $str = shell_exec(escapeshellcmd($this->pdfInfoPath . ' ' . $file_path));  
        $strInfo = explode("\n", $str);    
        foreach($strInfo as $string)
        {
            $pdfInfo[]= explode(":", $string);
        }
               
        foreach($pdfInfo as $array)
        {
           switch ($array[0])
            {
             case 'Title':
                 $this->title = $array[1];
                 break;
             case 'Keywords':
                 $this->keywords = $array[1];
                 break;
             case 'Description':
                 $this->description = $array[1];
                 break;
            }
        }
        shell_exec(escapeshellcmd($this->pdfToTextPath . ' ' . $file_path));      
        $file_path_txt = dirname(dirname(dirname(__FILE__))).'/download/test3.txt';
        $this->text = file_get_contents($file_path_txt);
    }
}
5
30 декабря 2011 года
hardcase
4.5K / / 09.08.2005
Насколько мне известно есть лишь единственный адекватный способ разбора PDF - это оптическое распознавание (сделать можно например FineReader-ом либо RS-ом).
277
30 декабря 2011 года
arrjj
1.7K / / 26.01.2011
Цитата: hardcase
Насколько мне известно есть лишь единственный адекватный способ разбора PDF - это оптическое распознавание (сделать можно например FineReader-ом либо RS-ом).



Это если в пдф-е сканы, а если в пдф-е текст, то думаю каким нибудь просмотрщиком можно вытянуть, например pdftotext :D

5
30 декабря 2011 года
hardcase
4.5K / / 09.08.2005
Цитата: arrjj
Это если в пдф-е сканы, а если в пдф-е текст, то думаю каким нибудь просмотрщиком можно вытянуть, например pdftotext :D


Совсем не обязательно сканы. Все "вытаскивалки" текста очень сильно мусорят и могут доставать текст непоследовательно. Я участвовал в разработке поисковика, который индексировал в том числе и PDF-ки. Пока не прикрутили RS - результаты извлечения текста были сильно посредственными.

7
31 декабря 2011 года
@pixo $oft
3.4K / / 20.09.2006
Интересное дело—значит,всякие Foxit reader'ы вытаскивают текст нормально,а остальные программы не способны?:) Что-то странное
297
02 января 2012 года
koodeer
1.2K / / 02.05.2009
Как я понимаю, всякие pdf-reader'ы просто рендерят документ в соответствии с его внутренней структурой и определёнными правилами. А "вытаскивалки" вынуждены будут копаться и в этой структуре, и в разметке для содержания, заметок, и всём прочем. В том числе javascript'ы в документе могут мешаться.
Это как разбор html. Браузер нормально показывает документ, а вытащить из него нужный текст программно - бывает проблематично.

В общем, реквестирую статью хардкейса на эту тему. Если это не коммерческая тайна. Потому что любопытная тема.
277
03 января 2012 года
arrjj
1.7K / / 26.01.2011
Просто в pdf-ке может быть текст перемешан. Например в несколько столбцов текст идет - ocr'ы понимают "столбик" и правильно его распознают, а более простая утилита может не понять это и делать строку из кусочков нескольких столбиков. Чем проще структура пдф'а будет тем правильней его расчленят дешевые утилитки :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог