如何使用PHP从屏幕截图中获取字幕?

时间:2012-01-08 17:06:50

标签: php screenshot ocr text-recognition

我从电影截图中抓取字幕。 一个例子 enter image description here

它会抓住

  嘿,为什么我们都不放松,是吗?

与副标题无关。它是截图。由于它是一个副标题,我们知道字体类型大小等,如果这样可以更容易抓取。

我知道你们大多数人会说PHP OCR库,但由于背景总是不同,看起来它不起作用。

1 个答案:

答案 0 :(得分:2)

背景不同应该不是问题,您可以使用图像库删除任何非文本颜色的内容。

这是一个简单的例子,可以很好地理解我的意思,用#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);

结果如下:

你知道字幕会在底部,因此你可以删除大部分顶部。然后只需通过OCR库运行它。

对于PHP,有PhpOCR,尽管必须先用示例字母来教。

使用外部OCR库或命令行工具并从PHP调用它可能更好。对于外部工具,有tesseractocropus(我相信ocropus也是由Google赞助的)。