LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

在 .NET 中使用 Tesseract 识别图片文字

freeflydom
2025年1月9日 9:17 本文热度 56
1. 什么是 Tesseract

Tesseract 是一个强大的字符识别 (OCR) 工具。它最初由 HP 发布,现在由 Google 和学术社区共同维护和开发。 Tesseract 支持多种语言和格式,能够高效地识别图片中的文字。

2. 如何安装 Tesseract

要在 .NET 项目中使用 Tesseract,需要安装相关的 NuGet 包和基础依赖。步骤如下:

  1. 在项目中通过 NuGet 安装 Tesseract 包:

    dotnet add package Tesseract
  2. 安装 SkiaSharp 来处理图片:

    dotnet add package SkiaSharp
3. 训练数据从哪里下载

Tesseract 需要训练数据文件来识别图片中的文字。这些训练数据文件可以从 Tesseract OCR GitHub  https://github.com/tesseract-ocr/tessdata下载。选择您需要的语言文件,并放置在项目相关目录中。

4. 如何使用 Tesseract

使用 Tesseract 识别图片中的文字,可以通过以下步骤完成:

  1. 创建一个 HttpClient 和 Logger ,用于下载图片和记录日志。

  2. 使用 SkiaSharp 来处理图片。

  3. 使用 Tesseract 完成 OCR 识别。

例子如下:

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();
                }
            }
        }
    }
}
5. Docker 环境中安装依赖

如果您在 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 中正常运行。

6.一个例子

 

识别结果

转自https://www.cnblogs.com/chenyishi/p/18658890


该文章在 2025/1/9 9:19:41 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved