OneConversorTemplate/OnlyOneAccessTemplate/Services/ImageToTextConverterService.cs

95 lines
3.8 KiB
C#

using OnlyOneAccessTemplate.Services.OnlyOneAccessTemplate.Services;
namespace OnlyOneAccessTemplate.Services
{
public class ImageToTextConverterService : BaseConverterService
{
private readonly HttpClient _httpClient;
public override string ConverterType => "image-ocr";
public override string ConverterName => "Image to Text (OCR)";
public ImageToTextConverterService(ILogger<ImageToTextConverterService> logger,
IConfiguration configuration, HttpClient httpClient)
: base(logger, configuration)
{
_httpClient = httpClient;
}
public override async Task<ConversionResult> ConvertAsync(ConversionRequest request)
{
try
{
if (request.FileInput == null)
{
return new ConversionResult(false, ErrorMessage: "Nenhuma imagem fornecida");
}
// Aqui você integraria com um serviço de OCR real como:
// - Azure Computer Vision
// - Google Cloud Vision
// - AWS Textract
// - Tesseract local
// Por agora, simular processamento
await Task.Delay(2000); // Simular processamento
// Exemplo de resultado simulado
var extractedText = $"Texto extraído da imagem: {request.FileInput.FileName}\n\n" +
"Este é um exemplo de texto que seria extraído da imagem usando OCR.\n" +
"Em uma implementação real, aqui estaria o texto real da imagem.";
return new ConversionResult(true, OutputText: extractedText);
}
catch (Exception ex)
{
_logger.LogError(ex, "Erro na conversão de imagem para texto");
return new ConversionResult(false, ErrorMessage: "Erro ao processar imagem");
}
}
public override ConverterConfiguration GetConfiguration(string language)
{
var texts = GetLocalizedTexts(language);
texts["ConverterTitle"] = language switch
{
"en" => "IMAGE TO TEXT CONVERTER - OCR ONLINE",
"es" => "CONVERTIDOR DE IMAGEN A TEXTO - OCR EN LÍNEA",
_ => "CONVERSOR DE IMAGEM PARA TEXTO - OCR ONLINE"
};
texts["ConverterDescription"] = language switch
{
"en" => "Extract text from images using Optical Character Recognition technology",
"es" => "Extrae texto de imágenes usando tecnología de Reconocimiento Óptico de Caracteres",
_ => "Extraia texto de imagens usando tecnologia de Reconhecimento Óptico de Caracteres"
};
texts["SelectFileText"] = language switch
{
"en" => "SELECT IMAGE",
"es" => "SELECCIONAR IMAGEN",
_ => "SELECIONAR IMAGEM"
};
texts["FileHelpText"] = language switch
{
"en" => "Max file size: 15MB. Supported formats: JPG, PNG, PDF, TIFF",
"es" => "Tamaño máximo: 15MB. Formatos soportados: JPG, PNG, PDF, TIFF",
_ => "Tamanho máximo: 15MB. Formatos suportados: JPG, PNG, PDF, TIFF"
};
return new ConverterConfiguration
{
ConverterType = "file",
OutputType = "text",
AcceptedFileTypes = new[] { ".jpg", ".jpeg", ".png", ".pdf", ".tiff", ".bmp" },
MaxFileSize = 15 * 1024 * 1024,
HasAdvancedOptions = true,
AllowShare = false, // OCR pode conter informações sensíveis
LocalizedTexts = texts
};
}
}
}