文字識別OCR技術目前已經是一種常見的Data Entry實現方式,自動識別PDF掃描件和圖片上的文字,然後用於數位化和自動化系統,實現Saving和工作效率和質量上的提高,這是一種技術趨勢。但是,目前OCR技術幾乎實現不了100%文字識別正確率。
那麼,原因何在呢?我認為最主要的原因有兩點:
第一、PDF文件和圖片的清晰度質量問題
清晰度和對比度直接影響了文字識別OCR的正確率,很多時候清晰度不夠高,人眼都無法識別,更不要說AI了。造成清晰度不夠高的原因有多種,原件的清晰度不夠高,拍攝/掃描的設備精度不夠高,後期處理過程中對清晰度造成影響等,這些都會造成要處理的PDF掃描件或者圖片文件的清晰度質量問題。
這屬於硬傷,需要從PDF掃描件或者圖片文件的生成和處理過程下手來提高清晰度和對比度。
有一個典型的例子就是,在處理髮票OCR文字識別過程中採用Centralized Operation Process(集中業務處理)的方式,購買高精度的掃描儀來掃描原件,從而提高要處理的PDF掃描件或者圖片文件的清晰度和對比度。
第二、PDF文件和圖片上所用的字體問題
就算是採取了高精度的拍照或者掃描設備,拿到了清晰度和對比度都很高的PDF掃描件或者圖片文件,有些時候也無法保證100%的文字識別率,為什麼呢?要看用了什麼樣的字體。一般而言,機打字體的識別率要高得多——目前已經達到商業應用的程度,例如發票識別、身份證等各種證件識別等,因為在這個PDF掃描件或者發票、證件圖片文件上使用的是標準字體,經過訓練後的AI可以較為準確地識別出這些需要的文字信息——接近100%。
而對於廣告字體,藝術字體,手寫字體等,問題就比較大了。當然了,在有足夠的訓練數據的情況下可以訓練AI來識別從而提高識別正確率。我最近用Google Tesseact OCR訓練了一個毛澤東字體,效果差強人意,可以識別大部分文字,但識別的正確率不夠高,原因應該是訓練數據集和訓練時間不夠。
文字識別OCR技術應該可以投入使用了,目前各個大公司都有OCR雲服務提供出來,包括百度、騰訊、阿里、谷歌Google、亞馬遜AWS和微軟Azure等,但是在商業應用中,考慮到數據的安全性和隱私性,客戶對於調用第三方的OCR服務來識別敏感數據並不放心,由此,就有了調用安裝在本地的第三方OCR識別類庫來做OCR識別的業務上的需要了。
我此前研究過利用Google Tesseract OCR本地類庫來實現OCR文字識別的案例(Google Tesseract OCR圖片文字識別應用案例(附Python原始碼)),測試結果還是不錯的。
今天抽了半天時間在此前那個案例基礎上做了一些算法上的優化,然後又用Python寫了一個桌面應用工具來調用OCR文字識別功能,實現了用桌面應用工具識別PDF掃描件和圖片文件等的功能。當然,需要安裝Google Tesseract OCR軟體和類庫。
程序運行:
選擇文件並打開一個從百度上下載下來的圖片文件(支持各種格式的圖片文件):
然後點擊窗口右下角的按鈕開始OCR識別:
簡單驗證一下,OCR文字識別的正確率還是非常高的。
繼續選擇文件並打開一個從百度上下載的PDF掃描件:
然後點擊窗口右下角的按鈕開始OCR識別:
PDF掃描件的文字內容分頁顯示出來了。
因為這兩個案例用到的PDF掃描件和圖片文件上都是標準字體,圖片質量和清晰度也較高,因此文字識別的正確率還是非常不錯的。
除此之外,OCR識別出來的文字也寫入了文本文件,用於後續的處理。
這個案例的Python程序的原始碼已經上傳到github,需要的可以直接點擊下載(下載前請點個讚,加個星star):
https://github.com/hanshiqiang365/ocr_demo
我今天做這個案例,應用了Python桌面應用開發,圖片灰度處理,Google Tesseract OCR技術實現,TXT文本文件寫入等知識和技能。
我今天開發出的這個桌面應用工具Google Tesseract OCR Tool 具有一定的商業價值。但是,目前市場上類似的產品也很多,玩法(算法)各有不同,但是根本的東西都是差不了太多的。
OCR文字識別前要做圖片處理——目的在於提高OCR識別的正確率,然後調用本地OCR工具或雲服務實現文字識別。而對於PDF掃描件要先拆分PDF文件為一頁頁的圖片,其他和圖片OCR文字識別都一樣。
算法需要不斷優化,和寫文章一樣,隨著學習和實踐,對於算法的認識越來越深,就能不斷優化算法,從而理解清楚AI的根本所在——最終目的在於為客戶創造商業價值。
故有此文,與君分享。
韓思先生,韓世強,在外企工作,英文名或者說德文名是HANS,因此筆名韓思先生。職業IT經理人,半個文化人。好讀書,好寫作,好爬山,現定居大連。從事IT行業近二十年,積累了豐富的IT軟體項目實施和管理經驗,做過程序猿,產品狗和運營貓,知識面較廣,並且喜歡總結和分享。