tercoIDE escribió:
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
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