Парсинг 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
Вопрос кто использовал что ли бо и может посоветовать?
Собственно текст получил с помощью примера с php.net осталось мета теги получить.
с помощью которой можно вытягивать и мета теги и текст с пдф файла.
Код:
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);
}
}
{
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);
}
}
FineReader-ом либо RS-ом).
Насколько мне известно есть лишь единственный адекватный способ разбора PDF - это оптическое распознавание (сделать можно например
Цитата: hardcase
Насколько мне известно есть лишь единственный адекватный способ разбора PDF - это оптическое распознавание (сделать можно например FineReader-ом либо RS-ом).
Это если в пдф-е сканы, а если в пдф-е текст, то думаю каким нибудь просмотрщиком можно вытянуть, например pdftotext :D
Цитата: arrjj
Это если в пдф-е сканы, а если в пдф-е текст, то думаю каким нибудь просмотрщиком можно вытянуть, например pdftotext :D
Совсем не обязательно сканы. Все "вытаскивалки" текста очень сильно мусорят и могут доставать текст непоследовательно. Я участвовал в разработке поисковика, который индексировал в том числе и PDF-ки. Пока не прикрутили RS - результаты извлечения текста были сильно посредственными.
Интересное дело—значит,всякие Foxit reader'ы вытаскивают текст нормально,а остальные программы не способны?:) Что-то странное
Это как разбор html. Браузер нормально показывает документ, а вытащить из него нужный текст программно - бывает проблематично.
В общем, реквестирую статью хардкейса на эту тему. Если это не коммерческая тайна. Потому что любопытная тема.
Просто в pdf-ке может быть текст перемешан. Например в несколько столбцов текст идет - ocr'ы понимают "столбик" и правильно его распознают, а более простая утилита может не понять это и делать строку из кусочков нескольких столбиков. Чем проще структура пдф'а будет тем правильней его расчленят дешевые утилитки :)