如何在?.NET?中使用?Tesseract?識別圖片文字
1. 什么是 Tesseract
Tesseract 是一個強大的字符識別 (OCR) 工具。它最初由 HP 發(fā)布,現(xiàn)在由 Google 和學(xué)術(shù)社區(qū)共同維護和開發(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)文章
詳解如何在.NET代碼中使用本地部署的Deepseek語言模型
這篇文章主要來和大家一起聊一聊怎么在?.NET?代碼中使用本地部署的?Deepseek?語言模型,文中的示例代碼簡潔易懂,有需要的小伙伴可以了解下2025-02-02
設(shè)置ASP.NET頁面不被緩存(客戶端/服務(wù)器端取消緩存方法)
設(shè)置頁面不被緩存:客戶端取消緩存、服務(wù)器具端取消緩存的具體實現(xiàn)代碼如下感興趣的朋友可以參考下哈,希望對大家有所幫助2013-06-06
使用Visual Studio創(chuàng)建ASP.NET Web API項目
這篇文章介紹了使用Visual Studio創(chuàng)建ASP.NET Web API項目的方法,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2022-03-03
Asp.net中處理一個站點不同Web應(yīng)用共享Session的問題
Asp.net中處理一個站點不同Web應(yīng)用共享Session的問題...2006-09-09
Repeater綁定dictionary數(shù)據(jù)源代碼及報錯解決
為大家講解下Repeater綁定dictionary數(shù)據(jù)源以及報錯處理的方法,感興趣的朋友可以參考下哈,希望對你有所幫助2013-04-04
Asp.net之TextBox只允許輸入數(shù)字的方法總結(jié)
Asp.net之TextBox只允許輸入數(shù)字的方法總結(jié),需要的朋友可以參考一下2013-02-02
Math.NET?Numerics?開源數(shù)學(xué)庫安裝使用詳解
本文給大家分享Math.NETNumerics庫的安裝方法和使用示例,該庫是C#中進行科學(xué)計算和數(shù)據(jù)分析的常用工具,本文介紹實例代碼給大家介紹的非常詳細,感興趣的朋友一起看看吧2025-03-03

