2012-01-08 90 views
-5

我從電影截圖中抓取字幕。 一個例子 如何從PHP截圖抓取字幕?

會搶

嘿,爲什麼我們不都只是放鬆,是吧?

與小標題沒有任何關係。它是截圖。由於它是一個字幕,我們知道字體大小等,如果這將使它更容易抓住。

我知道你們大多數人會說PHP OCR庫,但由於背景總是不同,它看起來不起作用。

+0

我真的不明白你的問題是什麼。 – nmagerko 2012-01-08 17:11:16

+3

'看起來它不起作用。' - 你試過了嗎?我的意思是它可能不會,但至少*嘗試*。而它可能不起作用的原因是因爲幾乎沒有任何東西會。當然,沒有任何預先構建的PHP支持。 – DaveRandom 2012-01-08 17:11:44

+0

「看起來它不起作用」,但你試過了嗎(OCR庫)?字幕通常位於場景的底部,因此您可以修剪大量圖片。 – Alex 2012-01-08 17:12:25

回答

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贊助的)。

+0

謝謝你。這對預處理很有用。之後,我認爲我應該在服務器端解決方案上工作。即使有一些庫,PHP也不足以做到這一點。 – SNaRe 2012-01-08 17:44:12