Guía Completa: Cómo Configurar un Adaptador de AWS Textract en .NET C# con Queries Personalizados 📄💻

La automatización del procesamiento de documentos es fundamental para empresas que manejan grandes volúmenes de información. AWS Textract permite extraer texto y datos estructurados de documentos escaneados de forma automática, mientras que .NET C# ofrece la flexibilidad para integrar esta funcionalidad en sistemas empresariales. En esta guía te mostraré cómo configurar un adaptador de AWS Textract en .NET C# con el uso de queries personalizados y el patrón repositorio para obtener información específica de manera eficiente.

🔧 Requisitos Previos

Antes de empezar, asegúrate de contar con los siguientes recursos:

  • Cuenta activa de AWS con permisos para utilizar Textract.

  • Visual Studio 2022 o superior instalado.

  • .NET 6 o .NET 8 SDK instalado.

  • AWS CLI correctamente configurado.

  • Access Key ID y Secret Access Key de AWS.

💡 Si no tienes todo listo, revisa nuestra guía de configuración de AWS.

1️⃣ Instalación de Dependencias 📦

Primero, instala el paquete de AWS Textract para .NET en tu proyecto.

Comando NuGet:
Install-Package AWSSDK.Textract
O con .NET CLI:
dotnet add package AWSSDK.Textract

🔔 Nota: Asegúrate de instalar la versión más reciente para evitar incompatibilidades.


2️⃣ Configuración de Credenciales de AWS 🔑

Configura tus credenciales de AWS para autenticarte correctamente con Textract.

Archivo appsettings.json:
{
  "AWS": {
    "AccessKey": "TU_ACCESS_KEY",
    "SecretKey": "TU_SECRET_KEY",
    "Region": "us-east-1"
  }
}

🔒 Seguridad: Usa variables de entorno para producción en lugar de colocar credenciales en archivos.


3️⃣ Implementación del Patrón Repositorio con AWS Textract 📂

El patrón repositorio mejora la organización del código y facilita el mantenimiento. Crearemos una interfaz y su implementación para el adaptador de Textract.

Interfaz ITextractRepository.cs:
using System.Collections.Generic;
using System.Threading.Tasks;

namespace TextractIntegration.Repositories
{
    public interface ITextractRepository
    {
        Task<List<QueryResult>> AnalyzeDocumentWithQueriesAsync(string filePath, List<string> queries);
    }
}
Implementación TextractRepository.cs:
using Amazon;
using Amazon.Textract;
using Amazon.Textract.Model;

namespace TextractIntegration.Repositories
{
    public class TextractRepository : ITextractRepository
    {
        private readonly AmazonTextractClient _textractClient;

        public TextractRepository(string accessKey, string secretKey, string region)
        {
            var config = new AmazonTextractConfig { RegionEndpoint = RegionEndpoint.GetBySystemName(region) };
            _textractClient = new AmazonTextractClient(accessKey, secretKey, config);
        }

        public async Task<List<QueryResult>> AnalyzeDocumentWithQueriesAsync(string filePath, List<string> queries)
        {
            var request = new AnalyzeDocumentRequest
            {
                Document = new Document
                {
                    Bytes = new MemoryStream(File.ReadAllBytes(filePath))
                },
                FeatureTypes = new List<string> { "QUERIES" },
                QueriesConfig = new QueriesConfig
                {
                    Queries = queries.Select(q => new Query { Text = q, Alias = q.Replace(" ", "_") }).ToList()
                }
            };

            var response = await _textractClient.AnalyzeDocumentAsync(request);
            return response.Blocks
                .Where(b => b.BlockType == BlockType.QueryResult)
                .Select(b => new QueryResult { Query = b.Query.Text, Answer = b.Text })
                .ToList();
        }
    }
}
Clase QueryResult.cs:
namespace TextractIntegration.Models
{
    public class QueryResult
    {
        public string Query { get; set; }
        public string Answer { get; set; }
    }
}

4️⃣ Ejemplo Práctico con la Implementación 📄

Uso del Repositorio:
using TextractIntegration.Repositories;

var textractRepo = new TextractRepository("TU_ACCESS_KEY", "TU_SECRET_KEY", "us-east-1");
var queries = new List<string>
{
    "¿Cuál es el número de referencia?",
    "¿Cuál es la fecha del documento?",
    "¿Quién es el destinatario de la carta?"
};

var resultados = await textractRepo.AnalyzeDocumentWithQueriesAsync("carta_notificacion.pdf", queries);

foreach (var resultado in resultados)
{
    Console.WriteLine($"Consulta: {resultado.Query} ➡️ Respuesta: {resultado.Answer}");
}

📢 Resultado esperado:

Consulta: ¿Cuál es el número de referencia? ➡️ Respuesta: REF-2025-001
Consulta: ¿Cuál es la fecha del documento? ➡️ Respuesta: 15 de enero de 2025
Consulta: ¿Quién es el destinatario de la carta? ➡️ Respuesta: Juan Pérez

🌟 Reflexión Final

Integrar AWS Textract con .NET C# utilizando el patrón repositorio mejora la escalabilidad, la seguridad y la organización del código. Esta implementación permite automatizar procesos de extracción de datos de documentos de forma más eficiente.

💻🚀 ¿Listo para optimizar tu gestión documental? Contáctanos y descubre cómo podemos ayudarte.

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This field is required.

This field is required.