
Realización de reconocimiento óptico de caracteres (OCR) con VBA
¿Alguna vez quisiste realizar el reconocimiento de caracteres ópticos (OCR) a través de VBA (Access, Excel, Word, …)?
Bueno, ¡es sorprendentemente fácil de hacer!
Hay una variedad de bibliotecas/aplicaciones que uno puede usar para esto, pero para la discusión de hoy usaré Tesseract OCR (consulte el enlace a continuación):
Una cosa importante a tener en cuenta es que Tesseract está actualmente en la versión 5.5.1, sin embargo, quería usar una versión que no requiriera instalación, una versión portátil, y para eso realmente usé la versión 3.02.
Así que descargué Tesseract 3.02 y lo extragué para, en mi caso, una subcarpeta llamada ‘Tesseract-Ocr’.
Luego, creé un formulario muy simple para permitir que el usuario seleccione un archivo a OCR, visitelo y también tome algunas elecciones funcionales de OCR (si se quiere) y un botón para ejecutar el OCR y un cuadro de texto para mostrar el texto OCR resultante.
El código del botón de comando es realmente simple, solo una cuestión de construir la línea de comando Tesseract y usar Shell para ejecutarlo:
Private Sub cmd_RunOCR_Click() On Error GoTo Error_Handler Dim sImageToOCR As String Dim sOCROutputPath As String Dim sOCROutputFile As String Dim sTesseractEXELocation As String Dim sCmd As String Dim iFileNum As Integer Dim bytes() As Byte Dim lFileLen As Long Dim sOCRText As String Dim lCounter As Long Dim iResponse As Integer If IsNull(Me.txt_ImgToOCR) = False And Dir(Me.txt_ImgToOCR) = "" Then End If Me.txt_ImageOCR = Null sImageToOCR = Me.txt_ImgToOCR sOCROutputPath = Application.CurrentProject.Path & "\OCR-Results\Output" sOCROutputFile = sOCROutputPath & ".txt" sTesseractEXELocation = """" & Application.CurrentProject.Path & "\Tesseract-OCR\tesseract.exe""" If Dir(sOCROutputFile) <> "" Then Kill sOCROutputFile 'sCmd = sTesseractEXELocation & " """ & sImageToOCR & """ """ & sOCROutputPath & """ -l eng" 'sCmd = sTesseractEXELocation & " """ & sImageToOCR & """ """ & sOCROutputPath & """ -psm " & Me.lst_psm & " -l eng -c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" sCmd = sTesseractEXELocation & " """ & sImageToOCR & """ """ & sOCROutputPath & """ -psm " & Me.lst_OCR_psm & " -l " & Me.lst_OCR_Language Debug.Print sCmd Shell sCmd, vbHide Do While Dir(sOCROutputFile) = "" lCounter = lCounter + 1 Debug.Print lCounter 'ProgressBar!!! Sleep 200 DoEvents If lCounter > 99 Then iResponse = MsgBox("The process may be stalled. Would you like to Cancel the process?", vbQuestion Or vbYesNo) If iResponse = vbYes Then GoTo Error_Handler_Exit If iResponse = vbNo Then lCounter = 0 'Reset the counter End If Loop Sleep 200 DoEvents iFileNum = FreeFile Open sOCROutputFile For Binary Access Read As #iFileNum lFileLen = LOF(iFileNum) If lFileLen > 0 Then ReDim bytes(0 To lFileLen - 1) Get #iFileNum, , bytes sOCRText = UTF8ToString(bytes) sOCRText = Replace(sOCRText, vbLf, vbCrLf) End If Close #iFileNum Me.txt_ImageOCR = IIf(sOCRText = "", "No OCR Results.", sOCRText) Error_Handler_Exit: On Error Resume Next 'If Not oOS Is Nothing Then Set oOS = Nothing Exit Sub Error_Handler: MsgBox "The following error has occurred" & vbCrLf & vbCrLf & _ "Error Source: cmd_RunOCR_Click" & vbCrLf & _ "Error Number: " & Err.Number & vbCrLf & _ "Error Description: " & Err.Description & _ Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _ , vbOKOnly + vbCritical, "An Error has Occurred!" Resume Error_Handler_Exit End Sub
Descargo de responsabilidad/Notas:
Si no tiene Microsoft Access, simplemente descargue e instale la versión de tiempo de ejecución disponible libremente (esto permite ejecutar bases de datos de MS Access, pero no modificar su diseño):
Tiempo de ejecución de Microsoft Access 2010
Tiempo de ejecución de Microsoft Access 2013
Tiempo de ejecución de Microsoft Access 2016
Microsoft 365 Access Runtime
Todas las muestras de código, descargar muestras, enlaces, … en este sitio se proporcionan ‘Como es‘.
En ningún caso, Devhut.net o Carda Consultants Inc. serán responsables ante el cliente/usuario final o cualquier tercero por ningún daños, incluidas las ganancias perdidas, los ahorros perdidos u otros daños incidentales, consecuentes o especiales que surgen de la operación o incapacidad de operar el software que Carda Consultants Inc. ha proporcionado, incluso si Carda Consultants Inc. ha sido asesorado de la posibilidad de la posibilidad de la posibilidad.
Descargar una base de datos de demostración
Siéntase libre de descargar una copia de demostración 100% desbloqueada utilizando el enlace proporcionado a continuación:
Descargue «Realización de reconocimiento de caracteres ópticos (OCR) con VBA» Tesseract-oCr_v1.000.zip-descargado 2 veces-44.66 kb
Tenga en cuenta que la descarga anterior no incluye una copia de Tesseract. Por lo tanto, debe descargar eso por separado y ajustar el código VBA para reflejar la ruta de tesseract.exe.
Demo Databasae Historial de versiones
Versión | Fecha | Cambios |
---|---|---|
V1.000 | 2025-06-16 | Lanzamiento inicial |
Historial de la página
Fecha | Resumen de cambios |
---|---|
2025-06-16 | Lanzamiento inicial |