Re: Proyecto Con OCR [Descargar mensaje]
Autor Mensaje
Responder citando Descargar mensaje
Mensaje Re: Proyecto Con OCR 
tercoIDE escribió:  
Puedes usar librerias externas y evitar la llamada Shell


De tu código, escribí un pequeño programa de línea de comandos.
Tuve pero que ajustar algunas cosas.

Public Struct Pix
w As Integer
h As Integer
d As Integer
wpl As Integer
refcount As Integer
xres As Integer
yres As Integer
informat As Integer
text As Pointer
colormap As Pointer
data As Pointer
End Struct


Library "libtesseract:4.0.0"

' TessBaseAPI* TessBaseAPICreate()
Private Extern TessBaseAPICreate() As Pointer

' int TessBaseAPIInit3(TessBaseAPI* handle, const char* datapath, const char* language)
Private Extern TessBaseAPIInit3(handle As Pointer, datapath As String, language As String) As Integer

' void TessBaseAPISetImage2(TessBaseAPI* handle, struct Pix* pix)
Private Extern TessBaseAPISetImage2(handle As Pointer, pix As Pix)

' void TessBaseAPISetSourceResolution(TessBaseAPI* handle, int ppi)
Private Extern TessBaseAPISetSourceResolution(handle As Pointer, ppi As Integer)

' int TessBaseAPIRecognize(TessBaseAPI* handle, ETEXT_DESC* monitor)
Private Extern TessBaseAPIRecognize(handle As Pointer, monitor As Pointer) As Integer

' char* TessBaseAPIGetUTF8Text(TessBaseAPI* handle)
Private Extern TessBaseAPIGetUTF8Text(handle As Pointer) As String

' void TessBaseAPIEnd(TessBaseAPI* handle)
Private Extern TessBaseAPIEnd(handle As Pointer)

' void TessBaseAPIDelete(TessBaseAPI* handle)
Private Extern TessBaseAPIDelete(handle As Pointer)


Library "liblept:5.0.2"

' PIX * pixRead (const char *filename)
Private Extern pixRead(filename As String) As Pix

' void pixDestroy (PIX **ppix)
private Extern pixDestroy(ppix As Pointer)


Public Sub Main()

Dim err As Integer
Dim tes As Pointer
Dim pis As Pix
Dim s As String

pis = pixRead("/ruta/del/archivo/imagen/del/texto")

tes = TessBaseAPICreate()
If tes == 0 Then Error.Raise("Errore !")

err = TessBaseAPIInit3(tes, Null, "eng")
If err <> 0 Then Error.Raise("Errore !")

' pis = pixScaleColor4xLI(pis)
' pis = pixConvertRGBToGray(pis, 0.5, 0.5, 0.5)

TessBaseAPISetImage2(tes, pis)

TessBaseAPISetSourceResolution(tes, 300)

err = TessBaseAPIRecognize(tes, 0)
If err <> 0 Then Error.Raise("Errore !")

' Escaneo OCR:
s = TessBaseAPIGetUTF8Text(tes)
Print s

TessBaseAPIEnd(tes)
TessBaseAPIDelete(tes)
pixDestroy(Object.Address(pis) + (SizeOf(gb.Pointer) * 3))

End

 



 


última edición por vuott el Martes, 15 Octobre 2019, 16:46; editado 4 veces 
Ver perfil del usuario Enviar mensaje privado
 
Cerrar ventana

Powered by Icy Phoenix based on phpBB
Design by Mighty Gorgon