摘要:它最初由 HP 发布,现在由 Google 和学术社区共同维护和开发。
Tesseract 是一个强大的字符识别 (OCR) 工具。
它最初由 HP 发布,现在由 Google 和学术社区共同维护和开发。
Tesseract 支持多种语言和格式,能够高效地识别图片中的文字。
要在 .NET 项目中使用 Tesseract,需要安装相关的 NuGet 包和基础依赖。步骤如下:
在项目中通过 NuGet 安装 Tesseract 包:
dotnet add package Tesseract安装 SkiaSharp 来处理图片:
Tesseract 需要训练数据文件来识别图片中的文字。
这些训练数据文件可以从 Tesseract OCR GitHub https://github.com/tesseract-OCR/tessdata下载。
选择您需要的语言文件,并放置在项目相关目录中。
使用 Tesseract 识别图片中的文字,可以通过以下步骤完成:
创建一个 HttpClient 和 Logger ,用于下载图片和记录日志。
使用 SkiaSharp 来处理图片。
使用 Tesseract 完成 OCR 识别。
例子如下:
public class TesseractOCRService{ private readonly HttpClient _httpClient; private readonly ILogger _logger; public TesseractOCRService(HttpClient httpClient, ILogger logger) { _httpClient = httpClient; _logger = logger; } public async Task Do(string imageUrl) { try { byte imageBytes = await DownloadImageAsync(imageUrl); using (var skBitmap = SKBitmap.Decode(imageBytes)) { var processedBitmap = PreprocessImage(skBitmap); using (var pix = ConvertSKBitmapToPix(processedBitmap)) { string captchaText = RecognizeText(pix); return captchaText; } } } catch (Exception ex) { _logger.LogError(ex.ToString); return string.Empty; } } private async Task DownloadImageAsync(string url) { return await _httpClient.GetByteArrayAsync(url); } private SKBitmap PreprocessImage(SKBitmap bitmap) { return bitmap; } private Pix ConvertSKBitmapToPix(SKBitmap skBitmap) { using (var image = SKImage.FromBitmap(skBitmap)) using (var data = image.Encode(SKEncodedImageFormat.Png, 100)) { return Pix.LoadFromMemory(data.ToArray); } } private string RecognizeText(Pix pix) { using (var engine = new TesseractEngine(@"./Services/TesseractService", "eng", EngineMode.Default)) { using (var page = engine.Process(pix)) { return page.GetText; } } }}如果您在 Docker 环境中使用 Tesseract,需要确保基础依赖已经安装。
参考PR https://github.com/charlesw/tesseract/issues/675
可以参考下面的 Dockerfile:
RUN apt-get update && apt-get install -y \ libfontconfig1 \ libfreetype6 \ libpng16-16 \ libjpeg62-turbo \ libx11-6 \ libxext6 \ libxrender1 \ tesseract-ocr \ libtesseract-dev \ libleptonica-devRUN ln -s /usr/lib/x86_64-linux-gnu/libdl.so.2 /usr/lib/x86_64-linux-gnu/libdl.soWORKDIR /app/x64RUN ln -s /usr/lib/x86_64-linux-gnu/liblept.so.5 /app/x64/libleptonica-1.82.0.soRUN ln -s /usr/lib/x86_64-linux-gnu/libtesseract.so.5 /app/x64/libtesseract50.so这些依赖确保 Tesseract 和其依赖库在 Docker 中正常运行。
识别结果
来源:opendotnet
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!