Mejorando Resultados OCR Insatisfactorios
La calidad OCR depende mucho del input. Una configuración, filtro o ajuste que lee un documento claramente puede fallar en otro, dejándole con texto distorsionado o incompleto. Cuando la lectura estándar decepciona, el paquete IronOcr.Extensions.AdvancedScan usualmente cierra la brecha de precisión.
La diferencia radica en el motor. El estándar IronOCR se ejecuta en el motor Tesseract, mientras que IronOcr.Extensions.AdvancedScan es impulsado por PaddleOCR y añade capacidades de aprendizaje automático. Eso lo hace bien adecuado para input ruidoso como capturas de pantalla, y para fuentes estructuradas como pasaportes y placas de matrícula.
El paquete expone métodos de lectura diseñados específicamente para estos casos:
Solución
1. Comienza con ReadDocumentAdvanced() y EnhanceResolution()
Antes de recurrir a cualquier otra configuración, combina el método ReadDocumentAdvanced() con el filtro de preprocesamiento EnhanceResolution(). Esta combinación resuelve la mayoría de los problemas de precisión que los usuarios enfrentan con la lectura estándar.
Aplica el filtro al OcrInput, luego pasa esa misma entrada a ReadDocumentAdvanced():
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadPdf("document.pdf");
// Upscale and sharpen low-resolution input before reading
input.EnhanceResolution();
var result = ocr.ReadDocumentAdvanced(input);
Console.WriteLine(result.Text);
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadPdf("document.pdf");
// Upscale and sharpen low-resolution input before reading
input.EnhanceResolution();
var result = ocr.ReadDocumentAdvanced(input);
Console.WriteLine(result.Text);
Imports IronOcr
Dim ocr As New IronTesseract()
Using input As New OcrInput()
input.LoadPdf("document.pdf")
' Upscale and sharpen low-resolution input before reading
input.EnhanceResolution()
Dim result = ocr.ReadDocumentAdvanced(input)
Console.WriteLine(result.Text)
End Using
ReadDocumentAdvanced() ejecuta el motor de aprendizaje automático PaddleOCR para analizar documentos con reconocimiento de diseño y carga de texto, mientras que EnhanceResolution() mejora la escala y agudiza la entrada de baja resolución antes de la lectura. La baja resolución es una causa común de malos resultados, por lo que este paso de preprocesamiento a menudo importa tanto como el cambio de motor.
2. Dirigirse a x64 en .NET Framework
Configure proyectos .NET Framework para construir como x64. AdvancedScan necesita una cantidad significativa de memoria, y ejecutarlo bajo una arquitectura diferente puede desencadenar errores en tiempo de ejecución. Consulte la guía Advanced Scan on .NET Framework para la configuración completa.
Limitaciones
AdvancedScan ofrece gran precisión, pero se aplican algunas limitaciones hoy en día:
- Menos características de resultado: Los objetos de resultado de AdvancedScan exponen menos propiedades que el objeto estándar
OcrResult. - Diferentes tipos de retorno: cada método de lectura devuelve un tipo de objeto de resultado diferente, así que revise la Referencia API para obtener los detalles del que llama.
- No hay PDFs buscables: la construcción de PDFs buscables a partir de la salida de AdvancedScan aún no está soportada, aunque la función está en desarrollo.
- Idiomas limitados: el paquete actualmente admite inglés, chino, japonés, coreano y alfabetos latinos.

