una thiagoalessio texto tesseractocr phpocr para leer imagen con php curl image-processing ocr gd

thiagoalessio - Leer texto en imagen con PHP



tesseract ocr para php (2)

Estoy tratando de leer el texto de esta imagen:

Quiero leer el precio, por ejemplo, " EUR42721.92 "

Probé estas bibliotecas:

  1. Cómo crear un decodificador de Captcha de PHP con PHP Clase de OCR: Reconocer texto y objetos en imágenes gráficas - Clases de PHP
  2. phpOCR: Reconocimiento óptico de caracteres escrito en PHP

Pero no funcionan. ¿Cómo puedo leer el texto?



Prueba esto (funcionó conmigo):

$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);

Necesita la extensión ImageMagick y GOCR instalado para ejecutarlo. Si no puede o no quiere instalar la extensión ImageMagick, le enviaré una versión GD con una función para calcular distancias de colores (es solo un Teorema de Pitágoras ampliado).

No te olvides de configurar el valor $ filePath.

La imagen muestra que busca un píxel gris para cambiar el indicador $ foundGray. Después de eso, busca el primer y último píxeles desde la izquierda y desde la parte superior. Recorta la imagen con algo de relleno, la imagen resultante se redimensiona y se guarda en un archivo temporal. Después de eso, es fácil usar gocr (o cualquier otro comando OCR o biblioteca). El archivo temporal se puede eliminar después de eso.