
Tesseract 是一个强大的字符识别 (OCR) 工具。它最初由 HP 发布,现在由 Google 和学术社区共同维护和开发。 Tesseract 支持多种语言和格式,能够高效地识别图片中的文字。
要在 .NET 项目中使用 Tesseract,需要安装相关的 NuGet 包和基础依赖。步骤如下:
在项目中通过 NuGet 安装 Tesseract 包:
dotnet add package Tesseract
安装 SkiaSharp 来处理图片:
dotnet add package SkiaSharp
Tesseract 需要训练数据文件来识别图片中的文字。这些训练数据文件可以从 Tesseract OCR GitHub https://github.com/tesseract-ocr/tessdata下载。选择您需要的语言文件,并放置在项目相关目录中。
使用 Tesseract 识别图片中的文字,可以通过以下步骤完成:
例子如下:
using SkiaSharp; using Tesseract; namespace AutoGetOrder.WebAPI.Services.TesseractService { public class TesseractOCRService { private readonly HttpClient _httpClient; private readonly ILogger<TesseractOCRService> _logger; public TesseractOCRService(HttpClient httpClient, ILogger<TesseractOCRService> logger) { _httpClient = httpClient; _logger = logger; } public async Task<string> 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<byte[]> 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-dev RUN ln -s /usr/lib/x86_64-linux-gnu/libdl.so.2 /usr/lib/x86_64-linux-gnu/libdl.so WORKDIR /app/x64 RUN ln -s /usr/lib/x86_64-linux-gnu/liblept.so.5 /app/x64/libleptonica-1.82.0.so RUN ln -s /usr/lib/x86_64-linux-gnu/libtesseract.so.5 /app/x64/libtesseract50.so
这些依赖确保 Tesseract 和其依赖库在 Docker 中正常运行。
识别结果
到此这篇关于在 .NET 中使用 Tesseract 识别图片文字的文章就介绍到这了,更多相关.NET Tesseract 识别图片文字内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!