C 使用Tesseract OCR 解析驗證碼

2021-06-27 20:32:35 字數 2752 閱讀 5962

tessnet官網:

之前我在一文中介紹了用c#識別簡單不變形數字驗證碼,但是對於識別變形的

下面介紹乙個開源的ocr引擎tesseract2。值得慶幸的是雖然是開源的但是它的識別率較高,並不比其他引擎差勁。網上介紹tessnet2也是當時時間排名第三的識別引擎,只是後來慢慢不維護了,目前是google在維護,大家都知道google 在搞電子圖書館,每天都有不同類目的書被掃瞄成電子版。所以有g老大維護,識別率差不到**去。呵呵。。別鄙視我。。。

tessnet2 是用vc ++ 開發的,其中是生成tessnet2.dll ,我們可以通過.net 來呼叫內部具體類庫實現識別。

tessnet2的使用:

2、將tessnet2.dll 新增到vs 引用中,和新增.net程式集一樣。

3、用tessnet2進行識別

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

webrequest request = webrequest.create("");

webresponse response = request.getresponse();

stream st = response.getresponsestream();

bitmap bitmap = (bitmap)bitmap.fromstream(st);

uncodebase ud =newuncodebase(bitmap );

bitmap = ud.graybypixels();

ud.clearnoise(128, 2);

picturebox1.image = bitmap ;

tessnet2.tesseract ocr =newtessnet2.tesseract();//宣告乙個ocr類

ocr.setvariable("tessedit_char_whitelist","0123456789");//設定識別變數,當前只能識別數字。

@"\\tmpe","eng",true);

listresult = ocr.doocr(bitmap , rectangle.empty);//執行識別操作

stringcode = result[0].text;

textbox1.text = code;

識別效果:

示例**執行時,有可能會報錯:未能載入檔案或程式集 試圖載入格式不正確的程式。。。。等之資訊吧,

解決方法:

將應用程式生成為any cpu就可以了

反之,如果系統是64位的win7,就應該將新專案的生成目標平台改為x86

綜上:

64位的win7 解決方案的生成目標平台設定為x86

32位作業系統 解決方案的生成目標平台設定為anycpu

另外乙個網友的問題解決方法:

我遇到過這個問題有兩次,不過環境不同。

第一次:windows 2008 server r2 64位;

第二次:windows 7 64位;

原因分析:作業系統是64位的,但發布的程式引用了一些32位的ddl,所以出現了相容性的問題。

解決方案:iis——應用程式池——高階設定——啟用32位應用程式 :true。

識別數字與字母**如下:

tessocr.setvariable("tessedit_char_whitelist", "0123456789abcdefghijklmnopqrstuvwxyz");

有個軟體中使用這個元件迴圈不停的ocr識別文字,然後問題來了,記憶體不停的往上飆,呼叫dispose方法根本沒用,解決辦法如下:

把識別過程的**封閉成乙個控制台應用程式,通過引數呼叫,這樣每識別一次,就會自動結束程序,內在也就釋放了

tesseract3.0教程:

Tesseract OCR 入門使用

以下只針對widows平台,linux下沒有測試 tesserocr與pytesseract是python的乙個ocr識別庫,但其實是對tesseract做的一層python api封裝,pytesseract是google的tesseract ocr引擎包裝器 所以它們的核心是tesseract,...

Tesseract OCR使用說明

新增源 sudo vi etc apt sources.list 新增deb bionic universe 其中bionic和自己安裝的系統有關,根據實際情況進行改變 安裝 sudo apt install tesseract ocr sudo apt install libtesseract d...

C 使用Tesseract OCR 解析驗證碼

之前我在一文中介紹了用c 識別簡單不變形數字驗證碼,但是對於識別變形的 下面介紹乙個開源的ocr引擎tesseract2。值得慶幸的是雖然是開源的但是它的識別率較高,並不比其他引擎差勁。網上介紹tessnet2也是當時時間排名第三的識別引擎,只是後來慢慢不維護了,目前是google在維護,大家都知道...