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

Posted

技术标签:

【中文标题】如何使用 PHP 从屏幕截图中获取字幕?【英文标题】:How to grab subtitle from screenshot with PHP? 【发布时间】:2012-02-05 10:58:36 【问题描述】:

我从电影截图中获取字幕。 一个例子

它会抓住

嘿,为什么我们不都放松一下,嗯?

与字幕无关。是截图。由于它是一个字幕,我们知道字体大小等是否会更容易抓取。

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

【问题讨论】:

我真的不明白你的问题是什么。 it looks like it won't work. - 你试过吗?我的意思是它可能不会,但至少尝试。它可能行不通的原因是因为几乎什么都行不通。当然没有任何预先构建的 PHP 支持。 “看起来行不通”,但是您尝试过吗(OCR 库)?字幕通常位于场景的底部,因此您可以先修剪很多图片。 我的意思是我试过这个phpclasses.org/package/… 但它没有用。该课程自 2006 年以来没有更新。该课程有其他替代品吗?我找不到。 背景总是不同并不重要,只需使用 GD(或其他一些图像库)将任何不是白色(字体颜色)的颜色替换为黑色。然后背景将始终相同(或接近),您可以使用 OCR。 【参考方案1】:

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

这是一个简单的示例,可以很好地理解我的意思,它将任何低于#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 调用它可能会更好。对于外部工具,有tesseract 和ocropus(我相信ocropus 也是由Google 赞助的)。

【讨论】:

谢谢。这对于预处理很有用。在那之后,我认为我应该在服务器端解决方案上工作。 PHP 不足以做到这一点,即使周围有一些库。

以上是关于如何使用 PHP 从屏幕截图中获取字幕?的主要内容,如果未能解决你的问题,请参考以下文章

如何不从照片库 iOS 中获取屏幕截图

如何从“最近打开的应用程序”中获取屏幕截图?

Android Studio错误尝试获取屏幕截图:“从设备获取屏幕截图时出现意外错误:EOF”

如何以编程方式获取 android 设备屏幕截图? [复制]

如何使用 php 截取已加载网页的屏幕截图? [复制]

如何获取 tkinter 窗口的屏幕截图