C# 調用Tesseract實現OCR


介紹

Tesseract是一個基於Apache2.0協議開源的跨平台ocr引擎,支持多種語言的識別,在Windows和Linux上都有良好的支持.

創建工程

創建一個C#的控制台工程

添加System.Drawing引用

因為在操作過程中我們會需要讀取圖片,所以這里需要這個

nuget里添加Tesseract引用


准備資源

這里共4個文件,2個目錄

首先下載這個eng.traineddata

度盤下載 密碼: 5xfs
在工程目錄里,建立一個tessdata文件夾(切記:文件夾一定要叫這名字!)放進去,文件屬性設置"如果較新則復制"

另外建立個images,放以下3張測試圖片(你可以直接在這右鍵下載):

1.png

1.png

2.png

2.png

3.png

3.png

如果你在VS里看不到這3張圖,那么你可能需要把它們添加到項目里:

記得把3張圖片設為"如果較新則復制"

編輯代碼

using引用:

using System;
using System.Drawing;
using Tesseract;

Main:

static void Main(string[] args)
{
	var tess = new TesseractEngine($"{AppDomain.CurrentDomain.BaseDirectory}/", "eng", EngineMode.Default);//構建對象並加載訓練好的數據
	Console.WriteLine($"Tesseract版本:{tess.Version}");
	tess.DefaultPageSegMode = PageSegMode.SingleLine;//設為單行識別
	{//圖片1
		var page = tess.Process((Bitmap)Image.FromFile("images/1.png"));//處理圖片
		Console.WriteLine($"識別到的內容:{page.GetText()}");//輸出識別內容
		page.Dispose();
	}
	{//圖片2
		var page = tess.Process((Bitmap)Image.FromFile("images/2.png"));//處理圖片
		Console.WriteLine($"識別到的內容:{page.GetText()}");//輸出識別內容
		page.Dispose();
	}
	{//圖片3
		var page = tess.Process((Bitmap)Image.FromFile("images/3.png"));//處理圖片
		Console.WriteLine($"識別到的內容:{page.GetText()}");//輸出識別內容
		page.Dispose();
	}
	tess.Dispose();
	Console.ReadKey(true);
}

運行試試

結束

可以看到大部分字符都是能夠識別的,不過有個別數字識別錯誤了,我們需要訓練自己的數據來提高正確率.
關於如何訓練,可參考我的另一篇文章:
https://www.cnblogs.com/DragonStart/p/9418053.html
另外我把文中的例子發布到了gitee,可以從這里獲取到整個工程:
https://gitee.com/o70078/tesseract_sample.git


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM