我从电影截图中获取字幕。一个例子
它会抢
嘿,为什么我们不都放松一下,嗯?
它与字幕无关。是截图。由于它是一个字幕,我们知道字体大小等是否会更容易抓取。
我知道你们中的大多数人会说 PHP OCR 库,但由于背景总是不同的,看起来它不起作用。
我从电影截图中获取字幕。一个例子
它会抢
嘿,为什么我们不都放松一下,嗯?
它与字幕无关。是截图。由于它是一个字幕,我们知道字体大小等是否会更容易抓取。
我知道你们中的大多数人会说 PHP OCR 库,但由于背景总是不同的,看起来它不起作用。
背景不同应该不是问题,您可以使用图像库删除不是文本颜色的任何内容。
这是一个简单的示例,可以很好地理解我的意思,它替换任何低于#f5f5f5
with 的颜色#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 调用它可能会更好。对于外部工具,有tesseract和ocropus(我相信 ocropus 也是由 Google 赞助的)。