Favour Kelvin

Favour Kelvin

Cómo extraer datos de facturas o recibos usando Python

dedos señalando líneas en un recibo

Cómo puedo automatizar la extracción de datos de mis recibos y facturas? Quizás te lo hayas preguntado. Pues bien, has llegado al lugar adecuado, ya que hablaremos de cómo extraer datos de tus documentos de forma rápida y sencilla utilizando solo unas pocas líneas de código. Sin embargo, antes de entrar en materia, echemos un vistazo rápido a qué es la extracción de datos y por qué es tan importante.

Qué es la extracción de datos?

La extracción de información de fuentes de datos para su posterior procesamiento, almacenamiento o análisis se denomina extracción de datos. Es posible extraer datos de una amplia gama de fuentes, incluyendo correos electrónicos, páginas web, imágenes, registros contables, archivos PDF, etc.

Tienes la opción de hacerlo manualmente o mediante un proceso automatizado. En la extracción manual de datos, la información se recopila a mano, mientras que, en la extracción automatizada de datos, la información se extrae utilizando herramientas o software.

Las empresas utilizan la información que obtienen mediante la extracción de datos para diferentes propósitos, como publicidad, análisis, planificación estratégica, etc.

*Aquí tienes una lista de algunas excelentes herramientas de extracción de datos.

Importancia de la extracción de datos

Cuando se trata de la extracción automatizada de datos, ofrece bastantes ventajas, algunas de las cuales son:

  1. Puede ayudar a reducir los costos a largo y corto plazo: Se pueden lograr ahorros de costos a corto y largo plazo cuando se automatizan procesos tediosos y que consumen mucho tiempo. Puedes concentrarte en operar y hacer crecer tu empresa sin preocuparte por contratar un gran equipo de datos para respaldarla.
  2. Ahorra tiempo a las empresas: El tiempo es esencial porque tiempo es dinero. Cuando se implementa correctamente, la extracción automatizada de datos ayuda a ahorrar tiempo y recursos, permitiendo a los empleados centrarse en tareas de mayor prioridad.
  3. Hace el trabajo más preciso y menos propenso a errores: Cuando los humanos son responsables de introducir grandes volúmenes de datos de forma regular, los errores e imprecisiones son inevitables. Estas imprecisiones pueden evitarse, y se pueden obtener mejores datos automatizando el proceso de extracción de datos, lo que permite a las empresas tomar decisiones mejores y más informadas, lo cual es beneficioso para todos.
  4. Tiene el potencial de aumentar la productividad de los empleados: Cuando sus empleados no están atascados con el tedioso trabajo de entrada de datos, tendrán más tiempo para dedicarse a otras tareas importantes.

Uso de la API de OCR para la extracción de datos

La API de Reconocimiento Óptico de Caracteres (OCR) puede escanear, reconocer y extraer texto de archivos de imagen y documentos; luego transcribirá el texto a un formato que su ordenador pueda entender, y usted podrá recibir los datos extraídos en formatos de archivo como JSON, CSV, etc. Las API de OCR se desarrollan utilizando tecnología OCR. Lo que las diferencia es que están entrenadas para extraer datos de documentos específicos y, como resultado, tienen un mayor grado de precisión.

Esta es claramente una tecnología beneficiosa para los desarrolladores que trabajan con una amplia variedad de aplicaciones, incluidas las relacionadas con contabilidad, comercio electrónico, atención médica, finanzas, logística, etc.

La Mindee OCR API es perfecta para la detección y extracción rápida de información clave de documentos comunes como facturas, recibos, pasaportes, etc. Sin embargo, puede crear su propia API para extraer datos de cualquier tipo de documento no mencionado anteriormente utilizando el constructor de API de Mindee. La API de Mindee es rápida, accesible las 24 horas del día y genera JSON por defecto.

También es capaz de extraer datos de documentos guardados en varios formatos de archivo, que incluyen jpg, png, pdf, tiff, heic y webp. Para entender completamente cómo usar la API de Mindee, veamos la siguiente sección.

Cómo extraer datos de recibos o facturas usando Python

Usando la biblioteca cliente de Python de Mindee, puede extraer datos de su factura o recibo de forma rápida y precisa. Solo se necesitan unas pocas líneas de código. Para demostrar cómo hacerlo, utilizaremos el documento de recibo de ejemplo a continuación.

Para empezar:

pip install mindee
  • Una vez instalada, regístrese para obtener una cuenta de Mindee para obtener su clave API.
  • Con su clave API, puede ejecutar su cliente Mindee:
from mindee import Client

mindee_client = Client().config_receipt("api-key")
receipt_data = mindee_client.doc_from_path("/path/to/file").parse("receipt")
print(receipt_data.http_response)

A continuación se muestra la salida del campo extraído.

{
  “api_request”: {
    “error”: {},
    “resources”: [
      “document”
    ],
    “status”: “success”,
    “status_code”: 201,
    “url”: “http://api.mindee.net/v1/products/mindee/expense_receipts/v3/predict”
  },
  “document”: {
    “annotations”: {
      “labels”: {}
    },
    “id”: “dd457c26-5baa-4612-827b-e10c3d1b7b3d”,
    “inference”: {
      “extras”: {},
      “finished_at”: “2022-07-07T13:12:47+00:00”,
      “pages”: [
        {
          “extras”: {},
          “id”: 0,
          “orientation”: {“value”: 0},
          “prediction”: {
            “category”: {
              “confidence”: 0.99,
              “value”: “food”
            },
            “date”: {
              “confidence”: 0.99,
              “polygon”: [
                [0.479, 0.173],
                [0.613, 0.173],
                [0.613, 0.197],
                [0.479, 0.197]
              ],
              “raw”: “26-Feb-2016”,
              “value”: “2016-02-26”
            },
            “locale”: {
              “confidence”: 0.82,
              “country”: “GB”,
              “currency”: “GBP”,
              “language”: “en”,
              “value”: “en-GB”
            },
            “orientation”: {
              “confidence”: 0.99,
              “degrees”: 0
            },
            “supplier”: {
              “confidence”: 0.71,
              “polygon”: [
                [0.394, 0.068],
                [0.477, 0.068],
                [0.477, 0.087],
                [0.394, 0.087]
              ],
              “value”: “CLACHAN”
            },
            “taxes”: [
              {
                “code”: null,
                “confidence”: 0.98,
                “polygon”: [
                  [0.19, 0.403],
                  [0.698, 0.403],
                  [0.698, 0.432],
                  [0.19, 0.432]
                ],
                “rate”: 20,
                “value”: 1.7
              }
            ],
            “time”: {
              “confidence”: 0.99,
              “polygon”: [
                [0.62, 0.173],
                [0.681, 0.173],
                [0.681, 0.191],
                [0.62, 0.191]
              ],
              “raw”: “15:20”,
              “value”: “15:20”
            },
            “total_incl”: {
              “confidence”: 0.99,
              “polygon”: [
                [0.549, 0.619],
                [0.715, 0.619],
                [0.715, 0.64],
                [0.549, 0.64]
              ],
              “value”: 10.2
            }
          }
        }
      ],
      “prediction”: {
        “category”: {
          “confidence”: 0.99,
          “value”: “food”
        },
        “date”: {
          “confidence”: 0.99,
          “page_id”: 0,
          “polygon”: [
            [0.479, 0.173],
            [0.613, 0.173],
            [0.613, 0.197],
            [0.479, 0.197]
          ],
          “raw”: “26-Feb-2016”,
          “value”: “2016-02-26”
        },
        “locale”: {
          “confidence”: 0.82,
          “country”: “GB”,
          “currency”: “GBP”,
          “language”: “en”,
          “value”: “en-GB”
        },
        “supplier”: {
          “confidence”: 0.71,
          “page_id”: 0,
          “polygon”: [
            [0.394, 0.068],
            [0.477, 0.068],
            [0.477, 0.087],
            [0.394, 0.087]
          ],
          “value”: “CLACHAN”
        },
        “taxes”: [
          {
            “code”: null,
            “confidence”: 0.98,
            “page_id”: 0,
            “polygon”: [
              [0.19, 0.403],
              [0.698, 0.403],
              [0.698, 0.432],
              [0.19, 0.432]
            ],
            “rate”: 20,
            “value”: 1.7
          }
        ],
        “time”: {
          “confidence”: 0.99,
          “page_id”: 0,
          “polygon”: [
            [0.62, 0.173],
            [0.681, 0.173],
            [0.681, 0.191],
            [0.62, 0.191]
          ],
          “raw”: “15:20”,
          “value”: “15:20”
        },
        “total_incl”: {
          “confidence”: 0.99,
          “page_id”: 0,
          “polygon”: [
            [0.549, 0.619],
            [0.715, 0.619],
            [0.715, 0.64],
            [0.549, 0.64]
          ],
          “value”: 10.2
        }
      },
      “processing_time”: 0.748,
      “product”: {
        “features”: [
          “locale”,
          “category”,
          “date”,
          “time”,
          “total_incl”,
          “taxes”,
          “supplier”,
          “orientation”
        ],
        “name”: “mindee/expense_receipts”,
        “type”: “standard”,
        “version”: “3.1”
      },
      “started_at”: “2022-07-07T13:12:46+00:00”
    }

Nota: Puede utilizar este mismo método para extraer datos de su documento de factura. Simplemente cambie 'receipt' por 'invoice' en el código y vincule la ruta a su documento de factura.

Extraer campos clave de sus facturas o recibos.

Es posible que desee extraer campos clave o adicionales de su documento. Por ejemplo, es posible que desee extraer la siguiente información de su documento de recibo: importes totales, categorías de gastos, fecha, información del proveedor, ubicación y hora, entre otros. Esto también se puede aplicar a su documento de factura; es posible que desee extraer la siguiente información: número de factura, fecha de factura, nombre del cliente, detalles de pago, etc.. Para ello, debe definir en su código los campos que desea extraer.

Utilizando el mismo documento de recibo, extraeremos los siguientes campos clave que se enumeran a continuación de nuestros recibos.

  • Importe total
  • Información del proveedor
  • Fecha
  • Categoría

Nota: Si bien este artículo solo cubrirá un pequeño subconjunto de la información que se puede extraer de una factura o recibo, la documentación de Mindeetiene muchos más ejemplos.

  • Importes totales: Para obtener el importe total, incluidos los impuestos
To get the total amount including taxes value

total_incl = receipt_data.receipt.total_incl.value
print("total with tax", total_incl)

Salida

total with tax 7.27
  • Información del proveedor: Para obtener el nombre del proveedor tal como aparece en el recibo.
# To get the supplier name

supplier_name = receipt_data.receipt.merchant_name.value
print("Supplier Name: ", supplier_name)

Salida

Supplier Name: MINDEE TAKE OUT
  • Fecha: Para obtener la fecha de pago tal como aparece en el recibo.
# To get the receipt date of issuance

date = receipt_data.receipt.date.value
print("Date on receipt: ", receipt_date)

Salida

Date on receipt:  2022-04-03
  • Categoría: Para obtener la categoría del recibo tal como aparece en el recibo.
# To get the category

category = receipt_data.receipt.category.value
print("purchase category: ", category)

Salida

purchase category: food

Nota: Puede utilizar este mismo método para extraer datos de su documento de factura. Sin embargo, hay algunos ajustes, ya que debe especificar adecuadamente los campos de la factura en su código. Para obtener más orientación, consulte la documentación de Mindee.

Conclusión

Como puede ver, los procesos son sencillos y fáciles de implementar. Si su aplicación está desarrollada en un lenguaje diferente a Python, no tiene que preocuparse, ya que Mindee proporciona ejemplos de código en diferentes lenguajes, incluyendo Node.js, PHP, Ruby, Curl, etc.

Acerca de

Desde fotos sencillas hasta PDF complejos o archivos manuscritos, la API de Mindee convierte los datos de tus documentos en JSON estructurado con alta fiabilidad. No se requiere entrenamiento de modelos. Compatible con cualquier alfabeto y cualquier idioma.

,
,

Punto clave

Punto clave