Различный фон не должен быть проблемой, вы можете просто использовать библиотеку изображений, чтобы удалить все, что не является цветом текста.
Вот быстрый пример, который дает хорошее представление о том, что я имею в виду, он заменяет любой цвет ниже #f5f5f5
на #000000
,
<?php
$im = imagecreatefromjpeg("img.jpg");
for ($x = imagesx($im); $x--;)
{
for ($y = imagesy($im); $y--;)
{
$rgb = imagecolorat($im, $x, $y);
if ((($rgb >> 16) & 0xFF) <= 245
&& (($rgb >> 8) & 0xFF) <= 245
&& ($rgb & 0xFF) <= 245)
{
$black = imagecolorallocate($im, 0, 0, 0);
imagesetpixel($im, $x, $y, $black);
}
}
}
header("Content-Type: image/jpeg");
imagejpeg($im);
Вот как выглядит результат:
You can probably chop most of the top part off since you know the subtitles will be at the bottom. Then just run it through an OCR library.
For PHP there's PhpOCR , хотя этому нужно учить сначала с помощью примеров букв.
Вероятно, лучше использовать внешнюю библиотеку OCR или инструмент командной строки и вызывать его из PHP. Для внешних инструментов есть tesseract и ocropus (я полагаю, что ocropus также спонсируется Google).