Как получить субтитры со скриншота с помощью PHP? - PullRequest
0 голосов
/ 08 января 2012

Я получаю субтитры из скриншота фильма. Пример enter image description here

Это схватит

Эй, почему бы нам всем просто не расслабиться, а?

Не имеет отношения к субтитрам. Это скриншот. Поскольку это подзаголовок, мы знаем размер шрифта и т. Д., Если это облегчит захват.

Я знаю, что большинство из вас скажут, что библиотека PHP OCR, но поскольку фон всегда отличается, похоже, он не будет работать.

1 Ответ

2 голосов
/ 08 января 2012

Различный фон не должен быть проблемой, вы можете просто использовать библиотеку изображений, чтобы удалить все, что не является цветом текста.

Вот быстрый пример, который дает хорошее представление о том, что я имею в виду, он заменяет любой цвет ниже #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);

Вот как выглядит результат:

image

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).

...