欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何在?.NET?中使用?Tesseract?識別圖片文字

 更新時間:2025年01月08日 08:58:55   作者:chester·chen  
Tesseract是一個強大的OCR工具,支持多種語言和格式,在.NET項目中使用Tesseract,需要安裝相關(guān)的NuGet包和基礎(chǔ)依賴,本文介紹如何在?.NET?中使用?Tesseract?識別圖片文字,感興趣的朋友一起看看吧

1. 什么是 Tesseract

Tesseract 是一個強大的字符識別 (OCR) 工具。它最初由 HP 發(fā)布,現(xiàn)在由 Google 和學(xué)術(shù)社區(qū)共同維護(hù)和開發(fā)。 Tesseract 支持多種語言和格式,能夠高效地識別圖片中的文字。

2. 如何安裝 Tesseract

要在 .NET 項目中使用 Tesseract,需要安裝相關(guān)的 NuGet 包和基礎(chǔ)依賴。步驟如下:

在項目中通過 NuGet 安裝 Tesseract 包:

dotnet add package Tesseract

安裝 SkiaSharp 來處理圖片:

dotnet add package SkiaSharp

3. 訓(xùn)練數(shù)據(jù)從哪里下載

Tesseract 需要訓(xùn)練數(shù)據(jù)文件來識別圖片中的文字。這些訓(xùn)練數(shù)據(jù)文件可以從 Tesseract OCR GitHub  https://github.com/tesseract-ocr/tessdata下載。選擇您需要的語言文件,并放置在項目相關(guān)目錄中。

4. 如何使用 Tesseract

使用 Tesseract 識別圖片中的文字,可以通過以下步驟完成:

  • 創(chuàng)建一個 HttpClient 和 Logger ,用于下載圖片和記錄日志。
  • 使用 SkiaSharp 來處理圖片。
  • 使用 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 環(huán)境中安裝依賴

如果您在 Docker 環(huán)境中使用 Tesseract,需要確?;A(chǔ)依賴已經(jīng)安裝。參考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.一個例子

識別結(jié)果

到此這篇關(guān)于在 .NET 中使用 Tesseract 識別圖片文字的文章就介紹到這了,更多相關(guān).NET  Tesseract 識別圖片文字內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論