介紹
Tesseract是一個基於Apache2.0協議開源的跨平台ocr引擎,支持多種語言的識別,在Windows和Linux上都有良好的支持.
創建工程
創建一個C#的控制台工程
添加System.Drawing引用
因為在操作過程中我們會需要讀取圖片,所以這里需要這個
nuget里添加Tesseract引用
准備資源
這里共4個文件,2個目錄
首先下載這個eng.traineddata
度盤下載 密碼: 5xfs
在工程目錄里,建立一個tessdata文件夾(切記:文件夾一定要叫這名字!)放進去,文件屬性設置"如果較新則復制"
另外建立個images,放以下3張測試圖片(你可以直接在這右鍵下載):
1.png
2.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