1. 程式人生 > >Tika結合Tesseract-OCR 實現光學漢字識別(簡體、宋體的識別率百分之百)—附Java原始碼實現及真實測試資料和訓練集下載地址

Tika結合Tesseract-OCR 實現光學漢字識別(簡體、宋體的識別率百分之百)—附Java原始碼實現及真實測試資料和訓練集下載地址

 

 OCR(Optical character recognition) —— 光學文字識別,是影象處理的一個重要分支,中文的識別具有一定挑戰性,特別是手寫體和草書的識別,是重要和熱門的科學研究方向。可惜國內的科研院所,基本沒有大量的高識別率的訓練集—筆者聯絡過北京語言大學研究生一篇論文的作者,他們說有%90的正確識別率,結果只做了簡單的2000字。真的是為了論文而論文。

斯坦福大學有個工程專案,專門做中文漢字的識別——歐美髮達國家的科研院所更有研究精神

 

提高識別率,訓練集是關鍵!

 提高識別率,訓練集是關鍵!!

 提高識別率,訓練集是關鍵!!!

 

下載訓練集—traineddata請移步:

https://github.com/tesseract-ocr/tessdata

中文請選如下4個:

chi_sim.traineddata (簡體— 對於宋體,畫素>= 300dpi:識別率高達%100,同時對英文及阿拉伯數字識別率高達百分之90以上
chi_sim_vert.traineddata (簡體,豎排)
chi_tra.traineddata (繁體)
chi_tra_vert.traineddata(繁體,豎排)【CoderBaby】

 

經過測試得出如下結論:

  • 對於宋體,白色背景,非傾斜等,畫素大於等於300dpi—識別率%100
  • 英文和數字,識別率超過90%
  • 特殊字元識別率不高
  • 畫素太低,識別率急劇下降
  • 多種背景顏色變化,識別率極低
  • 字型換成草書等,識別率大幅降低
  • 電影螢幕字幕和網頁截圖識別率較低
  • 掃描件如果字型太淡,太小,完全識別不出來
  • 提高識別率,需要自己做訓練集,工作量巨大的體力活(簡體漢字最少6753個,混合一些複雜的,至少要10000個字元;不同字型要重新做,因為本質上是圖形幾何計算,國內科研院所和開源的做的不多—待確認)

 

  • Java原始碼實現,tika結合Tesseract-OCR

1)原始碼如下(支援多個圖片識別)

    @Test
    public void testCode() throws IOException, SAXException, TikaException, InterruptedException {
        List<String> fileNames = new ArrayList<>();
        fileNames.add("chi_eng.png");
        fileNames.add("chi_eng01.png");
        fileNames.add("chi_old.png");
        fileNames.add("chi-scan-75dpi.jpg");
        fileNames.add("chi-scan-100dpi.jpg");
        fileNames.add("chi-scan-300dpi.jpg");
        fileNames.add("chi-smartphone.jpg");
        fileNames.add("chi-subtitle-v1.jpg");
        fileNames.add("english00.png");
        fileNames.add("pdf_shaomiao.png");
        fileNames.add("test.tiff");
        fileNames.add("weather.png");

        // 轉載請註明出處:https://www.cnblogs.com/NaughtyCat/p/how-to-install-tesseract-ocr-on-windows-and-centos.html
        TesseractOCRParser parser = new TesseractOCRParser();

        TesseractOCRConfig config = new TesseractOCRConfig();
        // 設定簡體中文訓練集
        config.setLanguage("chi_sim");
        // 設定Tesseract 安裝路徑
        config.setTesseractPath("C:/Program Files/Tesseract-OCR");
        // 設定train data 路徑
        config.setTessdataPath("C:/Program Files/Tesseract-OCR/tessdata");

        ParseContext context = new ParseContext();
        context.set(TesseractOCRConfig.class, config);
        context.set(TesseractOCRParser.class, parser);

        fileNames.forEach(filename -> {
            BodyContentHandler handler = new BodyContentHandler();
            File file = new File("E:/tika/testData" + File.separator + filename);
            if (file.exists()) {
                Metadata metadata = new Metadata();
                try (InputStream stream = new FileInputStream(file)) {
                    parser.parse(stream, handler, metadata, context);
                } catch (Exception e) { }
                handler.toString();
            }
        });
    }
}
  • 測試資料(圖片)說明及下載地址

具體說明及測試效果請參見:https://ocr.space/blog/2015/03/best-ocr-software-for-chinese.html

相關測試圖片請參見:https://github.com/A9T9/OCR-Benchmark

 

  •  如何做自己的測試資料集

 

請參考官網:https://github.com/tesseract-ocr/tesseract/wiki/Training-Tesseract-3.00%E2%80%933.02 

 

(2)原始圖片及效果

圖1

 

轉換效果如下:

 

【結論】

300dpi,識別率:%100

 


 

圖2

轉換效果如下:

Brief history

Tesseractwes orginally developed at HewlettPackard Laboratones Bristol and
atHewettPackard Co Greeley Colorado beween 1985 and 1994 wthsome
more changes made in 1996 to portto Windows and some C++zing in1998
In2005 Tesseract was open sourced by HP Since 2006 itis developed by Goosgle

Thelatest (LSTM based]j stableversionis4.10, released on July 7.2019.Latest source codes avaable from
master branch on GlHub.Openissues can be foundin ssue racker and Planning iki

 

Thelatest35 version 5 3.05.02 released onjune 19,2018.Latestsource code for3.055 avaable from
305 branch on GlHHub.There sno development forthisversion,butitcan be used forspecial cases .
see Regression offeatures from 30x

 

See Release Notes and Change Log formore detas ofthe releases-
Installing Tesseract

You can ettherInstall Tesseractvia prepulltbinary package or pulld iLfrom sourcey
Supported Complersare:

* GCC48 and above
* ang34and above
* MSVC 2015.2017.2019

Othercompllersmightwork butare notofially supportedl
Running Tesseract
Basiccommand line usage:

tesseract inagenane outputbase [-1 ]ang】 [--osn ocrenginenode] [--psn pagesegnode
[configfiles...]

Formore information aboutthe various command line options use esseract --henp or man tesseract .

Examples can befoundin thewiki
For developers

Developers can use Tbtessaract Cor

【結論】
英文,特殊符號等會識別失敗。識別率:>%80


 

圖3.

 轉換效果如下:

E g 氣

 

Even as Tvanja praised 8e parties Envoyed i 功 i5 7el gzamt7 comgpi 地 08
Qchieveze1 Q 7W7Der- Ofsocial media lsers appeared crilical of er as-
Sesszet 0f 加 e Trip adiistration「5 role 加 功 i5 endeavou7
IBM 表 示 不 服 ,Google 不 care。 下 而 讓 我 們 逐 字 逐 句 來 看 他 們 的 論 文
吧 , 對 於 爭 論 的 事 情 , 自 己 下 功 夫 搞 清 楚 。

 

鬆 貴 瑩 坊 辦 少
忠 : https:/ww.cnblogs-com/NaughtyCatpytranslate-of-google-
Quantum-supremacy-article-published-on-nature.html

Quantum supremacy using
a programmable

 

superconducting
processor

基 於 可 編 程 的 超 導 處 理 器 實 現 的 量 子 霸

 

動 關 盤 源 ,https://doorg/10.1038/s41586-019-1666-5
煌 收 船 2019 樂 7 歷 20 歷
旋 準 8 船 2019 樂 9 歷 20 廠
坊 終 發 療 2019 知 10 月 23 廳

Abstract
引 言

 

量 子 計 算 機 吹 牛 遢 說 , 對 於 特 定 的 計 算 任 務 , 基 於 量 子 處 理 器 的 計 算
機 , 其 速 度 相 較 於 經 典 處 理 器 呈 指 數 級 增 長 。 根 本 的 挑 戰 在 於 構 建 一

 【結論】
宋體,加粗,黑色——識別率%100;傾斜,綠色等——識別率:%70

圖4(掃描件).

 

 

 

 轉換效果如下:

節 P a
為客戶服務是華為存在的睢一理由” 從 公 司 層 面
看 , 為客戶創造價值的主業務流只有一個!

Ipo - nisgniedProductDevelopment

B croeis PaFA 4 辜蒙扁)




Unc - LomdTocash
芸 a npe waa8 2 菅墨

E Ig - ssueToResoliton 林
P L a 顫〉

 

n i t t

 

 

 

6 P: 01

IP0 主 業 務 流 包 括 : MW 流 程 、0R 流 程 、IPD 流 程

 

 

D
4 一


【結論】
pdf掃描件,只有比較大,比較粗的字能識別出來,顏色較淡的識別不出來
識別率:約%10


 圖5.

 

 

轉化效果如下:

大 行 佳 孔 當 自 弼 不 。

巧 者 勞 而 春 者 忱 , 無 能 者 無 所 必 , 作 食 而 邀
遊 , 陸 若 不 系 之 舟 。

Chacgyuisdt.

124565.


12256 dogdogunnn

【結論】
漢字、英文、數字混合
識別率:%60~%70


 

圖6(天氣網頁截圖)

 

轉換效果如下:

L f

全 國 > 囚 川 > 尿 膳 > 阪 區
今 奪 偉 8-15 天

 

llc/4rc

 

 

 

 

 

208 238 028 058
人 [ [ 92
s
c E E
無 RR 無 RR 無 RR 無 RR

< < < <

【結論】
背景顏色(藍色,灰色,黑色、橙色);字型顏色(黑色、白色)。識別率:不到%10


 

圖7.

轉換效果如下:

機 器 人 餐 廳

cra arenzanmu nnanmes
seeu xraguagpt. ssepumes
人 吊 pahs ztpznaapsus anea
an sro an sessuassnet
e ssoangm crmazees aas
iusiaanorg.mmouz rpeae
snreenatesezur eeae t
+ngszensenapenecieme
礦 svapgzanohat


【結論】
75dpi,識別率:約為%5 【CoderBaby】

 


 

圖8(電影字幕截圖).

轉換效果如下:

 

E
1 30
E
55

【結論】

背景顏色(漸變灰),字型為白色——識別率:%0


 

圖9(古籍).

 

 

轉換效果如下:

 

茂 長 萬 灰 咆
恍 “ 望 瀧 “ 鬆 驅
明 匹 一 圖 撫 札 狐
東 非 “ 柳 一 吳
埕 躍 X“ 埋 煌 弟
儀 懷 阪 稱 鳥 場 “
下 泊 聰 遇 林固 “
| 靴 猶 “

 

【結論】

豎排,古籍版 (需要“chi_tra.traineddata及“chi_tra_vert.traineddata”)——識別率:%0

 


 

圖9(手機拍照圖片).

轉換效果如下:

 

 

 

 

在 中 國 , 餐 廳 裡 的 菜 通 常 很 特 別 , 但 是 有 時 候 做 菜 和 服 務
的 人 也 很 特 別 : 不 久 前 昆 山 一 家 餐 廳 開 業 , 這 家 餐 廳 從 歡 迎 宰
人 、 點 菜 、 制 作 到 上 菜 , 大 部 分 工 作 都 由 機 器 人 完 成 。 餐 廳 經 理
宋 育 剛 對 他 的 “ 員 工 “ 很 滿 意 。 這 些 機 吒 人 能 理 解 40 句 日 常 生

 

 

 

 

活 用 語 , 因 此 可 以 與 顧 客 交 流 。 讓 宋 育 剛 最 滿 意 的 是 , 他 的 這 些
員 工 們 既 不 會 生 病 也 不 會 請 假 。 充 電 兩 個 小 時 後 , 它 們 就 又 能
投 入 使 用 了 , 因 此 它 們 要 比 普 通 員 工 優 秀 。 對 於 顧 客 來 說 , 技 術
水 平 有 沒 有 達 到 能 使 這 些 機 蹇 人 廚 師 很 好 地 調 味 還 不 得 而 知 。
不 過 , 機 器 人 廚 師 倒 是 非 常 令 人 期 待 。

【結論】
手機拍照圖片,還算清晰的——識別率:%100

 

轉載請註明出處:https://www.cnblogs.com/NaughtyCat/p/tika-support-Tesseract-OCR-with-source-code-and-test-data.html

 

參考:

1)https://stackoverflow.com/questions/23792373/installing-tesseract-ocr-on-centos-6

2)http://www.zmonster.me/2015/04/17/tesseract-install-usage.html 

 

*****************************************************************************************************

精力有限,想法太多,專注做好一件事就行

  • 我只是一個程式猿。5年內把程式碼寫好,技術部落格字字推敲,堅持零拷貝和原創
  • 寫部落格的意義在於打磨文筆,訓練邏輯條理性,加深對知識的系統性理解;如果恰好又對別人有點幫助,那真是一件令人開心的事

*****************************************************************************************************

&n