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