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.