14

この画像からテキストを読み取ろうとしています:

画像

価格を読みたい、例えば" EUR42721.92"

これらのライブラリを試しました:

  1. PHP OCR クラスを使用して PHP Captcha Decoder を作成する方法: グラフィカル イメージ内のテキストとオブジェクトを認識する - PHP クラス
  2. phpOCR: PHP で書かれた光学式文字認識エンジン

しかし、それらは機能しません。テキストはどうやって読めばいいですか?

4

2 に答える 2

2

これを試してください(私はうまくいきました):

$imagick = new Imagick($filePath);

$size = $imagick->getImageGeometry();
$width     = $size['width'];
$height    = $size['height'];
unset($size);

$textBottomPosition = $height-1;
$textRightPosition = $width;

$black = new ImagickPixel('#000000');
$gray  = new ImagickPixel('#C0C0C0');

$textRight  = 0;
$textLeft   = 0;
$textBottom = 0;
$textTop    = $height;

$foundGray = false;

for($x= 0; $x < $width; ++$x) {
    for($y = 0; $y < $height; ++$y) {
        $pixel = $imagick->getImagePixelColor($x, $y);
        $color = $pixel->getColor();
        // remove alpha component
        $pixel->setColor('rgb(' . $color['r'] . ','
                         . $color['g'] . ','
                         . $color['b'] . ')');

        // find the first gray pixel and ignore pixels below the gray
        if( $pixel->isSimilar($gray, .25) ) {
            $foundGray = true;
            break;
        }

        // find the text boundaries 
        if( $foundGray && $pixel->isSimilar($black, .25) ) {
            if( $textLeft === 0 ) {
                $textLeft = $x;
            } else {
                $textRight = $x;
            }

            if( $y < $textTop ) {
                $textTop = $y;
            }

            if( $y > $textBottom ) {
                $textBottom = $y;
            }
        }
    }
}

$textWidth = $textRight - $textLeft;
$textHeight = $textBottom - $textTop;
$imagick->cropImage($textWidth+10, $textHeight+10, $textLeft-5, $textTop-5);
$imagick->scaleImage($textWidth*10, $textHeight*10, true);

$textFilePath = tempnam('/temp', 'text-ocr-') . '.png';
$imagick->writeImage($textFilePath);

$text = str_replace(' ', '', shell_exec('gocr ' . escapeshellarg($textFilePath)));
unlink($textFilePath);
var_dump($text);

実行するには、ImageMagick 拡張機能と GOCR がインストールされている必要があります。ImageMagick 拡張機能をインストールできない、またはインストールしたくない場合は、色の距離を計算する機能を備えた GD バージョンをお送りします (拡張ピタゴラスの定理にすぎません)。

$filePath 値を設定することを忘れないでください。

クロッピング可視化のための画像解析

この画像は、灰色のピクセルを探して $foundGray フラグを変更することを示しています。その後、左と上から最初と最後のピクセルを探します。画像をパディングでトリミングし、結果の画像のサイズを変更して一時ファイルに保存します。その後、gocr (またはその他の OCR コマンドまたはライブラリ) を使用するのは簡単です。その後、一時ファイルを削除できます。

于 2014-10-06T20:07:08.307 に答える