Cómo leer fotos usando IronOCR
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 entra el Reconocimiento Óptico de Caracteres (OCR), ofreciendo un método automatizado para convertir con precisión el texto de 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 de 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 utilizando ReadPhoto
en lugar del estándar Read
de IronOCR.
Cómo leer fotos usando IronOCR
- Descargar la biblioteca C# para leer fotos
- Importar las imágenes para el procesamiento
- Utilice el método de importación apropiado según el tipo de imagen
- Utilice el método
ReadPhoto
para extraer datos de la imagen - Acceda a la propiedad OcrPhotoResult para ver y manipular los datos extraídos
Comience a usar IronOCR en su proyecto hoy con una prueba gratuita.
Para usar esta función, también debe instalar el paquete IronOcr.Extension.AdvancedScan.
Leer fotos ejemplo
La lectura de formatos de fotos de alta calidad, como tiff
y gif
, es relativamente sencilla usando 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
- Como 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 el formato TIFF de manera nativa, puedes descargar la entrada TIFF aquí. Para mostrar el archivo TIFF, lo convertiré a WEBP.
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)
Salida
Texto: El texto extraído del OCR de entrada.
Confianza: Una propiedad "double" que indica la confianza estadística de precisión de un promedio de cada carácter, donde uno es el más alto y 0 es 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 utiliza. La función LoadImageFrame
específicamente solo acepta los formatos 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 almacenamiento de alta calidad de múltiples imágenes (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.
Feature | TIFF (Tagged Image File Format) | JPG/JPEG (Joint Photographic Experts Group) |
---|---|---|
Compression | Lossless or uncompressed (preserves quality) | Lossy compression (reduces quality for smaller file size) |
File Size | Large (due to high quality and optional lack of compression) | Smaller, optimized for web use and fast loading |
Image Quality | High (ideal for professional use, retains all details) | Lower (due to lossy compression, some quality is sacrificed) |
Color Depth | Supports high color depth (up to 16-bit or 32-bit per channel) | 24-bit color (16.7 million colors) |
Use Case | Professional photography, publishing, scanning, archiving | Web images, social media, everyday photos |
Transparency | Supports transparency and alpha channels | Does not support transparency |
Editing | Good for multiple edits (no quality loss with resaving) | Quality degrades with repeated edits and saves |
Compatibility | Widely supported in professional software | Universally supported across all platforms and devices |
Animation | Does not support animation | Does not support animation |
Metadata | Stores extensive metadata (EXIF, layers, etc.) | Stores EXIF metadata but is more limited |
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 las anteriores, 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.
Usar la propiedad confidence
en OcrPhotoResults
o cualquier clase que use la interfaz IOcrResult
le dará una idea de cuán precisos son 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.