Actualizado 16 de febrero, 2025
Compartir:

Cómo leer fotos usando IronOCR

This article was translated from English: Does it need improvement?
Translated
View the article in English

por Curtis Chau

Al tratar con grandes volúmenes de documentos, particularmente imágenes escaneadas como archivos TIFF, extraer texto manualmente puede ser un proceso que consume mucho tiempo y es propenso a errores humanos. Aquí es donde el reconocimiento óptico de caracteres(OCR)entra en juego, ofreciendo un método automatizado para convertir con precisión el texto de las imágenes en datos digitales. La tecnología OCR puede manejar la complejidad de las imágenes, como documentos escaneados o fotografías, y convertirlas en texto editable y con capacidad de búsqueda. Esto no solo acelera el procesamiento de documentos, sino que también garantiza una extracción de datos más precisa en comparación con la transcripción manual.

El uso de OCR en formatos como TIFF, que pueden ser difíciles de leer debido a su tamaño, profundidad de color o compresión, permite a las empresas y desarrolladores digitalizar y gestionar rápidamente grandes cantidades de datos. Con soluciones OCR como la función ReadPhoto de IronOCR, los desarrolladores pueden extraer texto de imágenes e incluso realizar operaciones avanzadas como buscar palabras clave o convertir datos escaneados en PDFs con capacidad de búsqueda. Esta tecnología es especialmente útil para industrias que manejan documentos legales, archivos o recibos, donde la recuperación eficiente de datos es crítica.

En este tutorial, proporcionaremos brevemente una entrada y un ejemplo sobre cómo usar ReadPhoto y cómo manipular el objeto de resultados. Así como escenarios donde los desarrolladores los encontrarían usando ReadPhoto en lugar del estándar Read de IronOCR.

Comience a usar IronOCR en su proyecto hoy con una prueba gratuita.

Primer Paso:
green arrow pointer

Para usar esta función, también debe instalar el IronOcr.Extension.AdvancedScan paquete.

Leer fotos ejemplo

La lectura de formatos de fotos de alta calidad como tiff y gif es relativamente sencilla utilizando IronOCR. Primero creamos una nueva variable y la asignamos como un OcrInput, luego cargamos la imagen usando LoadImageFrame. Finalmente utilizamos el método ReadPhoto y obtenemos los resultados.

Atención

  • Dado que Tiff contiene múltiples fotogramas dentro de una sola imagen, se necesita el parámetro frameNumber. Además, el índice comienza en 0, en lugar de 1.
  • El método actualmente solo funciona para inglés, chino, japonés, coreano y alfabeto latino.
  • El uso de la exploración avanzada en .NET Framework requiere que el proyecto se ejecute en arquitectura x64.

Entrada

Dado que la mayoría de los navegadores no admiten de forma nativa el formato TIFF, puede descargar la entrada TIFFaquí. Para mostrar el archivo TIFF, lo convertiré a WEBP.

Entrada

Código

:path=/static-assets/ocr/content-code-examples/how-to/read-photo-read-photo.cs
using IronOcr;
using IronSoftware.Drawing;
using System;

// Instantiate OCR engine
var ocr = new IronTesseract();

using var inputPhoto = new OcrInput();
inputPhoto.LoadImageFrame("ocr.tiff", 0);

// Read photo
OcrPhotoResult result = ocr.ReadPhoto(inputPhoto);

// Index number refer to region order in the page
int number = result.TextRegions[0].FrameNumber;

// Extract the text in the first region
string textinregion = result.TextRegions[0].TextInRegion;

//Extract the co_ordinates of the first text region
Rectangle region = result.TextRegions[0].Region;

var output = $"Text in First Region: {textinregion}\n"
             + $"Text Region:\n"
             + $"Starting X: {region.X}\n"
             + $"Starting Y: {region.Y}\n"
             + $"Region Width: {region.Width}\n"
             + $"Region Height: {region.Height}\n"
             + $"Result Confidence: {result.Confidence}\n\n"
             + $"Full Scnned Photo Text: {result.Text}";

Console.WriteLine(output);
Imports Microsoft.VisualBasic
Imports IronOcr
Imports IronSoftware.Drawing
Imports System

' Instantiate OCR engine
Private ocr = New IronTesseract()

Private inputPhoto = New OcrInput()
inputPhoto.LoadImageFrame("ocr.tiff", 0)

' Read photo
Dim result As OcrPhotoResult = ocr.ReadPhoto(inputPhoto)

' Index number refer to region order in the page
Dim number As Integer = result.TextRegions(0).FrameNumber

' Extract the text in the first region
Dim textinregion As String = result.TextRegions(0).TextInRegion

'Extract the co_ordinates of the first text region
Dim region As Rectangle = result.TextRegions(0).Region

Dim output = $"Text in First Region: {textinregion}" & vbLf & $"Text Region:" & vbLf & $"Starting X: {region.X}" & vbLf & $"Starting Y: {region.Y}" & vbLf & $"Region Width: {region.Width}" & vbLf & $"Region Height: {region.Height}" & vbLf & $"Result Confidence: {result.Confidence}" & vbLf & vbLf & $"Full Scnned Photo Text: {result.Text}"

Console.WriteLine(output)
VB   C#

Salida

salida

El texto extraído de la entrada OCR.

Confidence: Una propiedad "double" que indica la confianza en la precisión estadística de un promedio de cada carácter, siendo uno el nivel más alto y 0 el más bajo.

TextRegions: Una lista de la propiedad "TextRegions" que indica dónde se encuentra el texto OCR y su ubicación dentro de la entrada. En el ejemplo anterior, imprimimos el número del fotograma así como el rectángulo que contiene el texto.


Diferencia entre ReadPhoto y Read

La principal diferencia entre este método readPhoto en comparación con el estándar read es el objeto de resultado y el formato de archivo que acepta. LoadImageFrame específicamente solo acepta tiff y gif y no acepta formatos como Jpeg, y hay algunas razones para ello.

Comparación entre imágenes Tiff y Jpg

Tiff como formato de archivo es sin pérdida y generalmente se utiliza para condensar múltiples páginas y múltiples fotogramas en un solo formato. Se utiliza típicamente para el almacenamiento de imágenes múltiples de alta calidad.(por ejemplo documentos legales, imágenes médicas). Es mucho más complejo que los formatos jpg estándar y, como tal, requiere una forma diferente para extraer completamente el texto de él.

Además, las imágenes Tiff solo utilizan una compresión diferente, por lo que IronOCR debe usar un método especializado para descifrar el texto.

Aquí tienes un desglose adicional entre TIFF y JPG como una comparación.

Característica TIFF (Tagged Image File Format) JPG/JPEG (Grupo de Expertos Fotográficos Conjuntos)
Compresión Sin pérdida o sin comprimir (preserva la calidad) Compresión con pérdida (reduce la calidad para un tamaño de archivo más pequeño)
Tamaño del archivo Grande (debido a la alta calidad y a la posible ausencia de compresión) Más pequeño, optimizado para uso web y carga rápida
Calidad de imagen Alto (ideal para uso profesional, conserva todos los detalles) Menor (debido a la compresión con pérdida, se sacrifica algo de calidad)
Profundidad de color Admite alta profundidad de color (hasta 16 bits o 32 bits por canal) Color de 24 bits (16,7 millones de colores)
Caso práctico Fotografía profesional, publicación, escaneo, archivado Imágenes web, redes sociales, fotos cotidianas
Transparencia Admite la transparencia y los canales alfa Hacenoapoyar la transparencia
Edición de Bueno para múltiples ediciones (sin pérdida de calidad al volver a guardar) La calidad se degrada con ediciones y guardados repetidos
Compatibilidad Ampliamente soportado en software profesional Compatible universalmente en todas las plataformas y dispositivos
Animación No admite animación No admite animación
Metadatos Almacena metadatos extensos (EXIF, capas, etc.). Almacena metadatos EXIF pero es más limitado

Diferentes escenarios

Los desarrolladores tendrán que considerar cada caso de uso en la producción para optimizar aún más y permitir que sus aplicaciones funcionen de manera efectiva. Aunque readPhoto es adecuado para imágenes complejas como Tiff como se mencionó anteriormente, el resultado se procesaría lentamente. Por otro lado, jpg puede tener una calidad inferior, pero la operación generalmente sería más rápida. Sin embargo, la calidad de la imagen, como tener ruido, resultaría en una baja tasa de confianza con el OCR.

El uso de la propiedad confidence en OcrPhotoResults o en cualquier clase que utilice la interfaz IOcrResult le daría una idea de la precisión de los resultados, permitiendo a los desarrolladores probar, reiterar y optimizar según lo deseen.

Los desarrolladores deben encontrar un equilibrio entre la eficiencia y la precisión, asegurándose de que las imágenes estén por encima de un cierto umbral para garantizar la consistencia.