猿學-OCR的應用錦集及背後技術

今天分享的主要是OCR的部分。分享騰訊雲在OCR上做的一些工作,以及騰訊雲目前在雲上面開放的OCR的一些服務。OCR簡單來說就是讓機器能看懂寫的文字。我們手寫的文字比較複雜,什麼樣子的都有。印刷的文字稍微簡單一點,但也同樣具有複雜性。今天主要講的就是這種複雜性,這種服務在日常生活或者工程中遇到不同情況所產生如何處理這些複雜性的能力。

imgOCR的應用集錦及背後技術-04.jpg

這裏分享兩個做過的例子。身份證相對來講很格式化、比較簡單東西,可以明確知曉在哪裏找到怎樣的文字信息。後一個是醫院的檢查報告,醫院的檢查報告相對而言複雜一點,它的複雜度在於不只是處理一個醫院的一種檢查報告,而是需要把不同的醫院的檢查報告全部做統一處理。這就增加了很大的難度。

imgOCR的應用集錦及背後技術-05.jpg

在做正式的介紹之前,先說一說關於OCR的歷史。OCR歷史回溯起來還是很久遠的,最早在六七十年代就有過實際的應用。大家都寫過信,郵編號碼在信封的左上角。這就是最早的OCR的應用。這種技術被使用在了一個非常窄的場景裏面,只是要求把填在空格里的數字穩定的有效的檢索、識別出來。當時的識別概率能達到92%-93%。這解決一個很大的問題,當時郵寄信都是通過識別碼來進行投遞的。

這個應用場景後來直接導致了2013年MINST的一個誕生。所有的框架都將它作爲例子。它就是來源於這種最早的應用。一些複印機,掃描儀廠商,例如,東芝,佳能、富士通等希望將這項技術應用於掃描儀裏面的文字轉化成電子文字,便於客戶存檔。在PDF裏面也用到這種技術。

時間到了2015年的時候,谷歌雲盤裏所有的文件免費提供OCR的服務。即便是提供免費服務仍是一種窄場景,只能使用在Google Doc存儲的文件。到今年的5月23日,騰訊雲公佈了OCR免費接入,以及其它很多AI類的圖像應用免費接入。這就意味着可以用手機移動終端或者任何的終端設備採集一些文字的圖片後上傳到雲進行解析。

imgOCR的應用集錦及背後技術-06.jpg

我用兩個維度來描述OCR的應用。一個維度是標明它是一種表格式的OCR還是通用式的OCR。所謂表格式的OCR比較好理解,就是說要識別的這個東西里面是一種表格制式的,它有特定的規格,什麼位置寫在什麼內容。通用OCR的話就沒有這種要求,隨便拍一張照片裏任何的文字都需要提取出來,並且告知那個文字或者那段文字在哪裏。這是一個維度。另外一個維度是印刷體維度和手寫體維度。這個比較好理解,但是有很多的應用裏面也是處於交界的位置上。手寫爲和印刷體還有一個交界是因爲很多印刷體本身並不是一個非常常用的印刷體。而且可以設計成類似於花體字或者寫得比較隨意一點。比如說招牌,王老吉或者天津狗不理包子。本身的字體並不是常見的字體,可以算是手寫體偏印刷體一點。

OCR難度肯定是表格式的會要容易一些。通用式的是要困難一些。同樣手寫體要困難一些,印刷體要簡單一些,那麼這個座標系裏面右下角的就是比較難的應用,左上角就是會稍微簡單一點。有任何的OCR實際場景應用的時候,我們經常拜訪客戶。客戶提出要解決某個問題的需求的時候,如果這個落到右下角的話就會比較難。如果落在左上角的話會比較容易解決一些。

imgOCR的應用集錦及背後技術-07.jpg

我們現在騰訊雲提供的印刷體的服務基本上都是這些,常用的是通用OCR。往騰訊雲裏面發一張圖片,他會把這個圖片裏面所有可識別的印刷體的文字全返回出來,並告訴你這個印刷體的文字在這個圖片裏的位置。除此之外還有一些證件類的,比如駕照、車牌、銀行卡、名片等等這些,稍後會逐一的介紹這方面的應用。現在用這四個特徵來描述我們的服務,第一我們要求服務是準確的;另外要求我們的服務是完備的,就是說能識別英文也能識別中文,也能識別字符。我們現在可以識別一部分的少數民族文字。英文也是沒有問題,其他的文字現在也逐漸的往外拓展一個一個的加到我們的範圍裏面。

imgOCR的應用集錦及背後技術-08.jpg

快速這個特性是很多的應用場景中所要求的,我們的OCR在GPU運行是毫秒級的。在CPU的話時間要長一點。還有就是魯棒性的問題。在手寫體的識別方面我們主要的應用比如手寫的備忘,像早期諾基亞有一款可以寫字並識別出來。現在所有的手機裏面都有這種功能。還有一些業務量較大的單據,如運單。這類業務我們是第一家將手寫體應用在實際場景中的。數字的識別率高達90%以上。單字的識別率在15毫秒以內,複雜漢字超過80%。

imgOCR的應用集錦及背後技術-09.jpg

手寫OCR強調;數字的準確率主要原因是因爲手寫體識別大部分都用在銀行業和數字相關的行業。無論你寫的地址還是寫一張支票,那麼數字都是最重要的部分。所以我們非常強調這個數字的準確率。騰訊雲的OCR服務在權威測評中也得到了非常好的成績。在2015年的時候取得了排名第一。ICDAR是一個國際文檔與識別大會,它是一個比較權威的在OCR方面的一個會議,每兩年舉辦一次。大家如果有興趣做一些OCR的實驗或者做一些OCR的這種技術性的開發,可以去ICDAR上面找一些對比的方法。

OCR技術本身的挑戰有這樣幾點:一個指拍出來的圖像。衆所周知所有的圖像類的AI第一步都是獲取圖像。要不然的話怎麼分析呢?那麼圖像拿過來的時候就會產生很多的問題,比如說你所用數據的採集,攝像頭等成像的儀器不一樣,成像的場景不一樣。還有要求可能也不一樣。

imgOCR的應用集錦及背後技術-10.jpg

OCR是應用很廣泛的一項技術,實際場景中會遇到一種文字傾斜、模糊等等的情況。這是一個技術上的挑戰。還有一個就是說語言文字本身,最簡單是英文OCR。一般來講中文稍微簡單一點。中文繁體字、手寫字,國內少數民族文字等使用場景因爲數據來源少,場景複雜難度有所增加。

文字大小不一以及文本背景複雜。主要是取決於場景,基本上所有常用的OCR識別步驟都是這樣子的:先做一個版面分析,即確定場景。根據版面分析大概明確了正在分析的是什麼(駕照、行駛證或發票等)。進而將下一步的步驟簡化到比較簡單的環境裏,這樣有助於提高分析的結果,並且能夠快速的分析出答案。

下面是文字檢測,以及文字識別。在此之後會有後處理,後處理根據一些語義和環境來把識別出來的錯誤糾正過來。例如:咖灰,咖後面不可能加一個灰,一般都是咖啡。在使用深度學習網絡技術做OCR時,並不是一步一步進行,而是一個網絡裏面的一個模塊和一個模塊對應的這種功能。但是整個的流程仍然是這樣邏輯的流程。

imgOCR的應用集錦及背後技術-11.jpg

OCR技術本身的發展可以說是分爲了三個階段。最早的時候不用檢測,就像上文講的信封上數字的識別,不需要做檢測。直接使用分類器就可以。早期的技術就是對圖像做一些特徵提取,後面加上分類器,比較成熟的比如有SVM,能直接得到的分類結果。但在當時應用場景很窄。之後場景擴展:先識別文字的位置然後再把這些文字進行一塊一塊的切。切到小圖像之後再回歸原來的過程進行識別。

這種方法存在一個很大的問題就是你前面切的話,後面的誤差會累積。再後來有了深度學習這項技術,就開始有端到端的模型。現在大部分學術界裏面研究發表的論文都是基於CNN和RNN網絡結構的。CNN的作用是圖像特徵提取,RNN做文字序列的識別。儘管網絡結構有很多的變形,但它背後的邏輯仍然和原來的沒有太大的變化:都是先從圖像上面提取一部分特徵,再將圖像上的特徵對應到文字上。CNN是最常用的一種提取圖像的特徵的方式所以CNN+RNN這種網絡結構處理圖像,最後圖像產生一系列文字的特徵,最後形成文字的過程。

Attention機制最大的優點在於識別當前的字或詞的時候,會考慮到它前後哪些字對這個字有影響。那麼在原來沒有這個之前一般認爲,所有的影響都是一樣的。因爲存在一定連貫性,每個字(詞)都與其上下文存在聯繫。考慮到這種關係就要對整體的模型和識別率進行提升。同時不同語言裏面的聯繫也有不同,這也爲語言的研究也提供了一定的信息。

imgOCR的應用集錦及背後技術-12.jpg

這張PPT對應了剛纔所講傳統的OCR的流程,先將圖片獲取進行二制化,來提出可能是文字的部分。再去分割這些字,把這些字分割成一塊一塊,再將這些一塊一塊小的圖片放到分類器裏面來識別這些文字是什麼字符。進行字符串彙總之後還會進行自然語言處理的修正,最後反饋正確的結果。目前騰訊雲基本上已經不採用這種傳統的方式,而是以端到端的方式爲主,那麼除了端到端的方式根據不同的場景應用,已經產生了一套類似工具集的方法。對於不同的應用場景,只需從工具集裏找出最爲適配這個場景的工具或者模塊,再將它們串起來進行調優,最後形成了整體識別的模型。

接下來先給大家介紹一下騰訊雲上的服務,再介紹一下我們做過的一些綜合類應用。這兩者的差別在於雲服務本身具有一定的通用性,基本上每個人都可以在騰訊雲申請一個賬號,通過標準的API發送圖片等等。項目更多是定製化解決一個具體問題的。我們就會根據具體的問題和它產生的流程來開發一套系統或者流程來配合它的實際業務,來提高他們的生產效率。

imgOCR的應用集錦及背後技術-14.jpg

身份證識可以說是目前最火的識別項目。很早在我們去酒店住店的時候就有一個叫做人證合一的認證過程,在沒有人工智能之前就有這種過程。去酒店住店,前臺將身份證號輸入到電腦發送至公安授權的某數據庫的遠程服務器上,之後服務器會返回一張身份證照片,服務員會看這個照片跟你本人是不是一個人,驗證完畢你就可以住店了。

現在的技術發展到顧客把自己的身份證插到一個讀卡器裏,它會把這個身份證信息發到身份數據庫裏面把照片返還回來,並通過攝像頭拍攝臉部信息,將拍攝信息與身份證直接對比。目前這項技術不只是用於住店,包括乘坐高鐵等,安保人證票合一等場景裏已經應用得越來越多。

imgOCR的應用集錦及背後技術-15.jpg

名片識別是介於格式化和非格式化通用之間的一種。因爲名片它所包含的信息是一定的,總會包含姓名包含工作地點,包括電話號碼這些。其所採用的字體各方面也比較恆定,所以說是格式化的。偏向通用是因爲各部分內容的位置是不一定的。比如一些特別有創意的名片,經常會用一些符號代替本來應使用的一些字。

imgOCR的應用集錦及背後技術-16.jpg

車牌識別服務應用範圍也比較廣。一方面是停車,還有在高速進出口以及交通管理車輛的識別也採用了車牌OCR的識別。車牌OCR的識別主要的難點在於場景多樣化以及前端採集設備的不可控。如果設備不是高清的設備放大之後會出現模糊的情況。

imgOCR的應用集錦及背後技術-17.jpg

駕駛證、行駛證兩個證件的識別一般用於租車以及車輛維修等領域的服務。共享汽車、滴滴都會用類似的服務。OCR在這類證件服務領域最大的難點在於證件的反光。這類證件本身它會有一層膜,拍照的時候可能會有反光。預處理會成爲OCR識別重要的模塊,這種預處理方式一般都是爲這種問題單獨開發的,它需要產生什麼呢?高動態,就是說這種會非常亮的。需要高動態、標準的歸一化過程,需要將識別部分歸一成比較一致的圖像。

imgOCR的應用集錦及背後技術-18.jpg

銀行卡是這個領域比較常見的服務,銀行卡的字體相對比較簡單,位置也相對固定,但有的時候字體會變得不好識別,尤其在不同的磨損條件下。發票OCR相對格式比較固定,問題在於發票種類多、發票的字體有時會打印的非常的不清楚。

imgOCR的應用集錦及背後技術-21.jpg

通用印刷體OCR是比較常見OCR的產品,對OCR的使用相當一部分都是來自於通用的印刷體。廣告識別佔比較大。這類OCR最大的難度在於很難預料它的背景是什麼樣子,字體也是各種各樣。在歸類方面會認爲是一種介於印刷體和手寫之間的應用方式。對這類識別首先需要有足夠大的字體庫,如果還不足以解決問題就需要將手寫體的技術也放在裏面以保證比較高的準確識別率。

imgOCR的應用集錦及背後技術-22.jpg

針對這一場景產生的方案可以使準確率達到90%以上。隨手拍其實也是通用印刷體常見的應用方式。他的問題也是場景變化比較大,會涉及到光線變化的問題。廣告類的話光線變化不會有太多的問題,這類光線角度是一個問題,同時還有拍照手抖帶來的圖像模糊,以及擺放時產生的文字遮擋……這些都會產生影響。

imgOCR的應用集錦及背後技術-23.jpg

血液的檢查單也是我們在做項目中的一部分,醫院裏打出來的血檢單,文字間距非常小,字也小,同時識別的時候還會產生透視畸變。對於這種情況有兩種處理方式:第採用超解析度做預處理,我把我的圖像先進行一個,可以理解成一個採用了人工智能技術的一個非性能差值,使解析度更高、文字看上去更可識別,在進行識別器識別。第二種方式把剛纔那部分集成到網絡設計裏,最大的好處在於針對這種情況會有比較高的識別準確率,並且識別速度會比較快。它的缺點在於遇到其他的類似的問題的時候還會需要較大的調整纔會適用新的場景。

imgOCR的應用集錦及背後技術-24.jpg

手寫體的識別就是比較困難的事情。我們是第一家把手寫體識別應用在實際場景中的。應用的場景以快遞運單、銀行的支票爲主。

以上這些服務在騰訊雲上都可以找到相應的服務接口,可以免費使用這些服務來自己搭建一個應用。當你實際需要開發的一個軟件,或者需要做一個手寫體的識別或者做一個通用的OCR識別的時候都可以直接去調用這些服務來完成應用。

下面都是有明確目標客戶的實際OCR應用場景。物流運單的挑戰:大概在2010年前後快遞業發展得非常迅猛。在當時他們的運單就是必須手寫之後錄入數據庫才能進行投遞。

imgOCR的應用集錦及背後技術-27.jpg

早期採取的都是人工錄入的方式,開玩笑的說這可能是是繼傳呼機之後另外一個打字市場。我們與順豐共同用手寫體的OCR來完成他們的運單錄入的過程。這種OCR的方式可以持續工作、準確率高達91%而且保密性更高。

imgOCR的應用集錦及背後技術-28.jpg

現在做的OCR系統,可以日處理一千萬單,相當於三千多人三班倒的工作量。泰康認知覈保項目,是我們現在在做的,我們也在不斷的尋找OCR所能達到的業務和應用的邊界。泰康覈保復項目:以前需要人工確認一個人當前的身體狀況是否能夠買這一份健康保險。

imgOCR的應用集錦及背後技術-29.jpg

我們的主要目的是開發一種代替原有核保方式的系統,降低對醫生或者說有醫療經驗的核保人員的需求。通過OCR分析,把這些保單進行格式化、結構化輸出。之後進行個人患病風險特徵的提取。再通過特徵建立預測模型,最終得到覈保的結論,這個項目對於OCR來講最大的難度在於單據格式的種類是衆多,來源不一。

第二個難度在於掃描件所產生的圖像質量差別非常大,第三設計系統需要對醫療知識有一定的瞭解。我們採用的方式是除了本身的OCR的設計能力,我們也請到了泰康的醫療專家來共同參與設計,並將知識儘量的加入到系統裏面。一方面通過醫療字庫來提供OCR字的轉化能力;另外一方面在做預測迴歸時把判斷通過機器學習的方式固化、標準化。

imgOCR的應用集錦及背後技術-30.jpg

未來我們仍會不斷的去探索AI特別是OCR的實際前沿應用。對糾錯庫多豐富一些場景信息,以使系統能夠適用更多不同的場景。

Q&A

Q:OCR比如說高考識別的過程中,跟快遞的掃描單有什麼區別嗎?高考卷這些OCR的掃描您那邊做過嗎?謝謝

A:我們做過但不是高考試卷,是教育的。教育的話其實並不是做只是針對高考一個場景的。其實高考的時候你寫得字往往是比運單寫的字還要清晰一些的,相對來講還是要容易一些。比較麻煩的是裏面有很多公式,這是比較頭疼的一點。還有一點不太一樣的,運單的話它的,你想輸入的這個東西是有一個比較窄的範圍的,你輸得無非是地址,地址你可以假設窮盡所有的地址選項。但是高考的話相對來講發散一點,它並沒有這麼一個全集在裏面。所以總體來講其實高考那個難度是要比運單的難度稍微大一些。但我們也有一些教育方面的應用,那個方面的話其實我們主要的工作是在公式上面。

Q:我問一下我現在有一個問題,我如果是PDF大量的文件上傳上去,因爲PDF是掃描的圖片,它的文字就可深可淺,當我上傳一個PDF掃描實現的時候,我很大的數據量進去的時候這塊是怎麼做處理的?

A:這個有點難住我了。其實關於P處理的問題剛纔那位同事回答更爲合適一點。因爲我是做算法應用的。

Q:比如說圖片的深淺不是切割了很多塊,切割了很多塊之後塊與塊之間的順序有一個拼接,這一塊是怎麼做到的?

A:現在來講有很多種方式。我們現在基本上不太建議這種分成小塊的方式。至少你可以分成行,分成行的話如果你要做一個RNN的話要比分成塊效果好一些。我的建議是說第一先通過一個最熟悉的方法把基本流程搭建起來,之後你會發現其中有一些步驟,那麼這些步驟在進行逐漸的優化和合並。因爲有的步驟如果是兩個步驟,你沒有必要用兩個步驟,用一個網絡可以更好的解決。可能用一個網絡效果會更好,所以我基本建議開發思路是這麼一個開發思路。

Q:我剛纔看到您做泰康項目的時候有很多先驗的信息,我想問一下先驗的信息對應於模型當中是加在哪些部分的?

A:我們剛開始的時候肯定還是要用後處理或者前處理的方法分開來做。第一實現起來比較簡單一點,你可以驗證你加的這個先驗知識是否真正的對你有幫助。當你確定它有幫助的時候,你把它先獨立的分塊,之後再進一步的優化形成一個整體的功能。實際的情況可能那種都會遇到,有的會分開兩部分,當然這個分開的就有一點技術含量了,這確實是會有一些面向應用場景的設計。

猿學-中國互聯網IT軟件培訓專家!承接電信、能源、金融、政府、製造業、商貿流通業、醫療衛生、教育與文化、交通、移動互聯網、傳媒、環保等軟件項目合作,歡迎洽談!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章