IRONSOFTWAREHOME
Corrección de QR AEAT y VeriFactu en Facturas Degradadas
using IronBarCode;
using IronSoftware.Drawing;

// Choose which filters are to be applied (in order)
// Set cacheAtEachIteration = true to save the intermediate image data after each filter is applied
var filtersToApply = new ImageFilterCollection(cacheAtEachIteration: true) {
    new SharpenFilter(),
    new InvertFilter(),
    new ContrastFilter(),
    new BrightnessFilter(),
    new AdaptiveThresholdFilter(),
    new BinaryThresholdFilter(),
    new GaussianBlurFilter(),
    new MedianBlurFilter(),
    new BilateralFilter()
};

BarcodeReaderOptions myOptionsExample = new BarcodeReaderOptions()
{
    // Set chosen filters in BarcodeReaderOptions
    ImageFilters = filtersToApply,

    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
};

// Read with the options applied
BarcodeResults results = BarcodeReader.Read("screenshot.png", myOptionsExample);

AnyBitmap[] filteredImages = results.FilterImages();

// Export intermediate image files to disk
for (int i = 0 ; i < filteredImages.Length ; i++)
    filteredImages[i].SaveAs($"{i}_barcode.png");

// Or
results.ExportFilterImagesToDisk("filter-result.jpg");
Imports IronBarCode
Imports IronSoftware.Drawing

' Choose which filters are to be applied (in order)
' Set cacheAtEachIteration = true to save the intermediate image data after each filter is applied
Dim filtersToApply As New ImageFilterCollection(cacheAtEachIteration:=True) From {
    New SharpenFilter(),
    New InvertFilter(),
    New ContrastFilter(),
    New BrightnessFilter(),
    New AdaptiveThresholdFilter(),
    New BinaryThresholdFilter(),
    New GaussianBlurFilter(),
    New MedianBlurFilter(),
    New BilateralFilter()
}

Dim myOptionsExample As New BarcodeReaderOptions() With {
    .ImageFilters = filtersToApply,

    .Speed = ReadingSpeed.Balanced,
    .ExpectMultipleBarcodes = True
}

' Read with the options applied
Dim results As BarcodeResults = BarcodeReader.Read("screenshot.png", myOptionsExample)

Dim filteredImages As AnyBitmap() = results.FilterImages()

' Export intermediate image files to disk
For i As Integer = 0 To filteredImages.Length - 1
    filteredImages(i).SaveAs($"{i}_barcode.png")
Next

' Or
results.ExportFilterImagesToDisk("filter-result.jpg")
NuGet Download
PM > Install-Package BarCode
Corrección de QR AEAT y VeriFactu en Facturas Degradadas

Corrección de QR AEAT y VeriFactu en Facturas Degradadas

En España, la normativa AEAT exige que cada factura incluya un código QR verificable conforme al Real Decreto 1007/2023. Sin embargo, los documentos impresos con impresoras térmicas de baja calidad, papel reciclado o en entornos húmedos presentan con frecuencia códigos QR degradados que los lectores estándar no pueden interpretar. IronBarcode ofrece muchos filtros de preprocesamiento de imágenes para elegir que se aplican fácilmente dentro de BarcodeReaderOptions. Seleccione los filtros que pueden mejorar la lectura de su imagen, como Sharpen, Umbral Binario, y Contrast. Por favor tenga en cuenta que el orden en que los elija es el orden en que se aplican.

Existe la opción de guardar los datos de imagen de las imágenes intermedias con cada filtro aplicado. Esto se puede alternar con la propiedad SaveAtEachIteration de ImageFilterCollection.

Puntos clave del ejemplo de código presentado:

  • Creamos una instancia de BarcodeReaderOptions y la configuramos con varios filtros de imagen: Sharpen, Binary Threshold, y Contrast.
  • Los filtros se agregan en un orden específico, indicando la secuencia en la que deben aplicarse.
  • Al configurar cacheAtEachIteration a true, la biblioteca guarda imágenes intermedias después de cada aplicación de filtro, lo cual es útil para la depuración y análisis.
  • Finalmente, leemos el código de barras de la imagen e imprimimos el tipo y valor del código de barras en la consola.

Corrección de códigos QR en facturas AEAT y recibos TicketBAI

En el contexto del cumplimiento normativo español, la corrección de imágenes no es un caso de uso marginal: es un requisito operativo habitual. Las empresas sujetas a VeriFactu (Real Decreto-Ley 15/2025) generan facturas con un código QR que apunta a sede.agenciatributaria.gob.es y contiene una cadena de hashes encadenados. Cuando estas facturas se imprimen, escanean o fotocopian para su archivo, la calidad del código QR puede degradarse considerablemente.

Del mismo modo, en el País Vasco, los recibos emitidos bajo el sistema TicketBAI (obligatorio en Bizkaia, Gipuzkoa y Araba) llevan un código de barras o QR que identifica cada operación ante la administración tributaria foral. Un QR de TicketBAI mal impreso en una caja registradora térmica puede resultar ilegible sin un preprocesamiento adecuado.

El siguiente flujo de trabajo es recomendable para procesar lotes de facturas impresas con QR de la AEAT:

  1. Cargar las imágenes escaneadas de las facturas en una List<string>.
  2. Configurar BarcodeReaderOptions con los filtros Sharpen, BinaryThreshold y Contrast en ese orden.
  3. Activar SaveAtEachIteration = true durante la fase de calibración para identificar qué filtro mejora más la legibilidad en cada tipo de impresora.
  4. Extraer la URL de verificación del QR y validar que apunta al dominio de la AEAT antes de archivar el documento.

Este proceso garantiza que el registro VERI*FACTU se lea íntegramente incluso en condiciones de digitalización adversas, cumpliendo con las obligaciones de conservación documental exigidas por la normativa española de facturación electrónica.

Obtenga más información sobre la corrección de imágenes en IronBarcode
Ver en GitHub

¿Listo para empezar?

Nuget Downloads 2,422,100Versión:2026.9recién lanzado

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

Your trial license will be sent to your email address

Sin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.

bullet_checkedNo se requiere tarjeta de crédito ni creación de cuentaSin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Reserve su Demostración en Vivo gratuita
Booking Badge

Confiado por millones de ingenieros en todo el mundo

Logos de clientes de Iron Software
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta