前言
最近再搞OCR的,用於識別日文報刊,是公司的一個日本項目,做的我是苦不堪言。最近把自己的工作內容寫出來,也會做一個系列和專欄,歡迎關注!
想搞好這個OCR,需要讀論文。好在只需要讀4篇,都是Tesseract的作者Ray Smith寫的。Tesseract目前被Google維護並開源,以後的前景應該會非常好。
按發表時間排序:
- 2007,An Overview of the Tesseract OCR Engine
- 2009,Hybrid Page Layout Analysis via Tab-Stop Detection
- 2009,Adapting the Tesseract Open Source OCR Engine for Multilingual OCR
- The Fourth Annual Test of OCR Accuracy[不是Ray所寫]
需要深入研究的請戳鏈接。以上都是英文資料,中國人幫助中國人,所以我會把我翻譯過的一部分公佈出來,歡迎關注。if 沒有公佈,歡迎來問,前3篇論文都已經看過2、3遍了,還是知道一些東西的。
OCR概述
全稱Optical Character Recognition ,中文即:光學字符識別。這是文字自動輸入的一種方法,通過掃描和攝像等光學輸入方式獲取紙張上的文字圖像信息,利用各種模式識別算法分析文字形態特徵,判斷出文字的標準編碼,並按通用格式存儲在文本文件中,從根本上改變了人們對計算機文字人工編碼錄入的概念。
我這就是瞎扯淡。。。大家自己去維基百科上看吧。
Tesserct概述
原理和架構會單獨拿出來去寫,請關注—->傳送門(安好啦,快來點啊! <-_->)。
圖1 識別過程圖
圖2 識別過程圖(中文版)
入門操作
開發環境(請注意你自己的):
- Python2.7,用自帶的IDLE即可
- Ubuntu14.04 LTS
- Tesseract 3.02
如果沒有這些東西,試了下面的代碼不成功,建議使用虛擬機(VM)來安裝這些工具。
注意2點:
1 Tesseract在Github上的Python API,在你自己的電腦不一定能跑通,因爲libtesseract.so.3的存儲位置不同,需要自己去找自己本機的libtesseract.so.3
2 Tesseract的處理時間和圖片大小有關,越大的圖片用時越長,用大圖片測試的童鞋請耐心等待
代碼如下:
##########################################
#內容來自:谷震平的博客,http://blog.csdn.net/guzhenping
#谷震平原創,請尊重版權!
#這個是最精簡的Python代碼,後續會給出複雜的~~~~~~
#使用說明:(1) 注意你的引擎庫文件的位置,可能需要修改libname;
#(2) 我的待識別圖片filename在桌面上,請注意修改,一定要把文件擴展
#名帶上
##########################################
import os
import ctypes
libname = "/usr/lib/libtesseract.so.3" # tesseract引擎的動態庫
lang = "eng" # 識別的語言,eng是英文,chi_sim是中文,自己選擇
filename = "/home/guzhenping/Desktop/tests.jpg" # 待識別圖片
# 加載動態庫
tesseract = ctypes.cdll.LoadLibrary(libname)
TESSDATA_PREFIX = os.environ.get("TESSDATA_PREFIX")
# 創建一個handle,請看TessBaseAPI,你就懂了爲啥非要有handle
api = tesseract.TessBaseAPICreate()
# 初始化引擎
rc = tesseract.TessBaseAPIInit3(api,TESSDATA_PREFIX,lang)
# 處理待識別圖片
text_out = tesseract.TessBaseAPIProcessPages(api,filename,None,0)
#轉成字符串
result_text = ctypes.string_at(text_out)
print result_text # 輸出結果
結語
如果希望深入研究Tesseract,歡迎交友,留言。此外,我還有印象筆記的工作記錄。如果可以,歡迎交換研究資料。
這些工作還有待完善,會慢慢發佈的,期待您的關注!
谷震平的原創文章,請尊重版權,轉載請註明出處。謝謝~~~~
新開通微信公衆號,歡迎關注原創文章: