В одном из недавних проектов мне понадобился полнотекстовый поиск по PDF документам и картинкам. В результате поиска подходящего инструмента наткнулся на Tesseract OCR. Это весьма простой и удобный инструмент распознавания текста на разных языках, в том числе и на русском.
У этого инструмента есть три основных плюса:
Следующая команда для командной строки готовит изображение для распознавания, все параметры выбраны для достижения максимума качества считывания, и немного ограничены потребляемые ресурсы для библиотеки image-magick, она используется в паре с tesseract-ом:
$cmd = " convert -density 300 -units PixelsPerInch -thumbnail 3000x3000 ".
" -limit memory 64MiB -limit map 128MiB -limit thread 4 ".
" -background white -alpha remove \"{$this->filename}[{$i}]\" \"{$tmp}\" ";
exec($cmd,$out,$return);
Это строка для распознавания через tesseract:
$cmd = " tesseract \"$tmp\" \"$out\" -l rus ";
exec($cmd,$out,$return);
Это все, что нужно чтобы на выходе получить текст)) И все!
Когда я начинал пользоваться tesseract-ом, то была еще только командная строка для обращения. Сейчас уже написали PHP-класс для обращения к нему, хотя это мелочь. В проекте работал с версией 2.3 и тогда не было вывода результата в консоль, работать можно было только через файлы. Сейчас уже это можно. Также сейчас можно организовать распознавание PDF в оперативной памяти. без участия файловой системы. Для распознавания PDF помимо imageMagick потребуется библиотека GhostScript.
Документация в составе с инструментом с примерами, и очень хорошо все поясняет. По мне это решение очень большой головной боли)))) ... прекрасный инструмент.