OCR/PDF Para Facturas de Empresas

Hola, buenos dias!

Estoy probando obtener un lector de facturas (llegan a la empresa y pueden ser diferentes tipos).
El problema es que al ser Facturas, pueden tener formatos diferentes, por lo tanto no es posible con un lector común, completar la tarea que necesito.

Objetivo: Mi aplicación debe poder obtener los valores específicos y poder enviárselos al usuario. Por ejemplo, poder saber cual es la Razón Social; CUIT/CUIL; Nro. de Cliente; IVA; Subtotal; Valor Total a pagar; ETC.

Estuve intentando con lector OCR y también con lector PDF. Creo que PDF puede ser mejor, pero me sirve de ambas formas.

Espero poder obtener su ayuda. Desde ya muchas gracias!!

@Picart_Fernando

Para comprobar la viabilidad de sus requisitos, necesitamos su documento PDF de muestra. ¿Puede proporcionarlo y compartiremos nuestros comentarios en consecuencia?

Fact_RadioMec.pdf (155,0 KB)
Fact_Ropelato.pdf (160,6 KB)

Me gustaria probar obtener los datos en Fact_RadioMec:

  • Tipo de factura: A
  • Razón social:
  • Compr. Nro:
  • CUIT:
    -Forma de Pago:
  • Vto:
  • TOTAL ($):
  • Vto. de CAE:

Del cuadro, traer dentro de una lista:
( nro item; Descripción; Cantidad; Unit $ ;Imp Int; SubTot $ )

Hello, good morning!

I am attempting to develop an invoice reader (invoices arrive at the company and can be of different types). The challenge lies in the fact that, being invoices, they may come in different formats, making it impossible for a regular reader to fulfill the specific task I need.

Objective: My application should be able to extract specific values and deliver them to the user. For instance, it should identify the Legal Name, Tax ID (CUIT/CUIL), Customer Number, VAT, Subtotal, Total Amount to Pay, etc.

I have experimented with OCR and also with PDF readers. I believe PDF may be a better option, but both methods are acceptable for my purpose.

I hope to receive your assistance. Thank you very much in advance!

@Picart_Fernando

For your requirements, we would suggest that you use Aspose.OCR as it provides feature to extract text from scanned PDF documents. Furthermore, such accuracy is quite hard to meet as it depends upon the image quality and brightness. Therefore, we need to investigate and request you please share a sample PDF that you expect to have. We will log an investigation ticket and share the ID with you.

Fact_RadioMec.pdf (155,0 KB)
Fact_Ropelato.pdf (160,6 KB)

I would like to try obtaining the data in Fact_RadioMec:

  • Tipo de factura: A
  • Razón social:
  • Compr. Nro:
  • CUIT:
  • Forma de Pago:
  • Vto:
  • TOTAL ($):
  • Vto. de CAE:

From the box, bring into a list:
(item number; Description; Quantity; Unit $; Imp Int; SubTot $)

@Picart_Fernando

We are checking it and will get back to you shortly.

Okey.
Thank you, very much.

Hola, buenos días… Cómo estás?

Quisiera saber si hay novedades sobre progreso?

Saludos! Que tengas buen día.

@Picart_Fernando

Hemos investigado su documento y descubrimos que, lamentablemente, no podemos procesar dichos documentos PDF. Sin embargo, puede convertir dichos archivos en imágenes usando Aspose.PDF y luego realizar una operación de OCR en ellos para extraer texto de las imágenes convertidas. A continuación se muestra un fragmento de código de muestra para eso:

AsposeOcr api = new AsposeOcr();

Resolution resolution = new Resolution(300);
PngDevice imageDevice = new PngDevice(resolution);
Document pdfDocument = new Document(pdfPath);

for (int pageCount = 1; pageCount <= pdfDocument.Pages.Count; pageCount++)
{
    using (MemoryStream ms = new MemoryStream())
    {
        // Convert a particular page and save the image to stream
        imageDevice.Process(pdfDocument.Pages[pageCount], ms);

        OcrInput input = new OcrInput(InputType.SingleImage);
        input.Add(ms);
        var recognResult = api.Recognize(input, new RecognitionSettings { });
        ms.Close();
    }
}

A continuación se muestran los archivos adjuntos que contienen los resultados de la extracción durante nuestras pruebas.
files.zip (16.9 KB)

Además, tememos que no pueda extraer los valores como espera porque dicha funcionalidad no está disponible ni en Aspose.PDF ni en Aspose.OCR. No existe ningún marcador en los archivos o campos de formulario que pueda ayudar en la extracción de valores específicos.

Sin embargo, puede crear su propia lógica (si es posible) para extraer el texto deseado del contenido, pero aún así será difícil hacerlo genérico para diferentes tipos de facturas y archivos.

No dude en hacérnoslo saber en caso de que tenga más inquietudes.

Holas buenas noches! Como estas?

Estuve mirando los archivos que me has enviado dentro del archivo .zip, y he visto que lo imprime con errores (simbolos en vez de letras o numeros).
Que probabilidad hay de poder arreglar eso y que yo pueda leer correctamente, palabra por palabra, lo escrito dentro del documento?

Me gustaria poder arreglar eso y poder usarlo de esa forma.

Muchas gracias. Saludos cordiales!

@Picart_Fernando

Confirme si entendimos sus inquietudes correctamente. Quiere que API extraiga el texto completo correctamente. ¿Bien?

Exacto, poder leer de forma correcta las letras y números.
Es importante que la información este completa.
Y con esto, podría intentar manejar la información según lo requiera.

Consulto porque he visto que tiene algunos errores en la devolución.

@Picart_Fernando

Hemos abierto los siguientes tickets nuevos en nuestro sistema interno de seguimiento de problemas y entregaremos sus correcciones de acuerdo con los términos mencionados en Free Support Policies.

ID(es) del problema: OCRNET-766

Puede obtener Paid Support Services si necesita soporte de forma prioritaria, junto con el acceso directo a nuestro equipo de gestión de soporte pago.

@Picart_Fernando

Estos archivos PDF no son archivos PDF escaneados. En este caso, es mejor utilizar Aspose.PDF:

Aspose.Pdf.License PDFL = new Aspose.Pdf.License();
PDFL.SetLicense("Aspose.Total.Product.Family.lic");

Aspose.Pdf.Document PDFDocument = new Aspose.Pdf.Document(filename);
int nPageCount = PDFDocument.Pages.Count;

Aspose.Pdf.Text.TextAbsorber textAbsorber = new Aspose.Pdf.Text.TextAbsorber();
PDFDocument.Pages.Accept(textAbsorber);

String TextResults = textAbsorber.Text;

Extrae texto de PDF sin errores.
Desafortunadamente solo estamos en la etapa de investigación de extracción de palabras clave, si lo necesita