95 lines
3.8 KiB
C#
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
|
|
};
|
|
}
|
|
}
|
|
}
|