Reconocer texto de una imagen (Emgu) problema
Estoy usando Emgu para extraer un texto de una imagen, pero me estoy enfrentando a un problema en el último paso (Reconocimiento), por favor, ayúdenme chicos ..
HE ESCRITO EL MENSAJE DEL PROBLEMA EN EL CÓDIGO COMO UN COMENTARIO
código:
Imports Emgu.CV
Imports Emgu.Util
Imports Emgu.CV.OCR
Imports Emgu.CV.Structure
Public Class Form1
Dim OCRz As Tesseract = New Tesseract("tessdata", "eng", OcrEngineMode.Default)
Dim pic As Bitmap = New Bitmap(270, 100)
Dim gfx As Graphics = Graphics.FromImage(pic)
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
gfx.CopyFromScreen(New Point(Me.Location.X + PictureBox1.Location.X + 4, Me.Location.Y + PictureBox1.Location.Y + 30), New Point(0, 0), pic.Size)
PictureBox1.Image = pic
PictureBox1.Image = Nothing
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim img As New Image(Of Bgr, Byte)(pic) 'probar otra forma de resolver el problema
OCRz.Recognize(pic) 'no funciona: Demasiados argumentos para 'Public Function Recognize() As Integer.
OCRz.Recognize(img) 'no funciona: Demasiados argumentos para 'Public Function Recognize() As Integer.
OCRz.Recognize(New Image(Of Bgr, Byte)(pic)) 'no funciona: La resolución de sobrecarga falló debido a que no hay _
'accesible 'New' que se pueda llamar con estos argumentos.
' 'Public Sub New(channels() As Emgu.CV.Image(Of Emgu.CV.Structure.Gray, Byte))' El valor del tipo Bitmap no puede_
'convertirse en un array unidimensional de Emgu.CV.Image(Of Emgu.CV.Structure.Gray, Byte.
RichTextBox1.Text = OCRz.GetBoxText
End Sub
End Class
davy.ai
Solución para la Extracción de OCR de Emgu
En el código proporcionado, hay algunos errores al utilizar el motor OCR Tesseract de Emgu. El error “Demasiados argumentos para ‘Public Function Recognize() As Integer” ocurre porque el método
Recognize
del motor OCR no toma ningún parámetro. Por lo tanto, hay dos formas de pasar la imagen al motor OCR.Solución uno
La primera manera es utilizar el método
Recognize
sin ningún parámetro y establecer la imagen en el motor OCR. Puedes eliminar la líneaDim img As New Image(Of Bgr, Byte)(pic)
y reemplazar todos los demás métodosRecognize
con el siguiente código.Solución dos
La segunda solución es convertir la imagen
Bitmap
en unaEmgu.CV.Image
. Casi estabas utilizando correctamente la segunda solución. Sin embargo, el problema ocurrió en el parámetro incorrecto en el métodoRecognize
. Puedes reemplazar la siguiente líneacon el siguiente código
Al pasar
Nothing
como un parámetro adicional, puedes resolver el error “Resolución de sobrecarga fallida porque no se puede llamar a ningún ‘Nuevo’ accesible con estos argumentos.”Espero que esta solución te ayude a extraer texto de una imagen utilizando Emgu OCR sin ningún problema.