天天看點

冀永楠:OCR的應用錦集及背後技術

歡迎大家前往騰訊雲+社群,擷取更多騰訊海量技術實踐幹貨哦~

本文由雲加社群技術沙龍 發表于雲+社群專欄
演講嘉賓:冀永楠,現為騰訊雲大資料AI産品中心進階研究員。負責了騰訊雲與華星光電等多個圖像AI項目。
冀永楠:OCR的應用錦集及背後技術

7.28冀永楠OCR的應用集錦及背後技術-01.jpg

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

冀永楠:OCR的應用錦集及背後技術

7.28冀永楠OCR的應用集錦及背後技術-04.jpg

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

冀永楠:OCR的應用錦集及背後技術

7.28冀永楠OCR的應用集錦及背後技術-05.jpg

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

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

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

冀永楠:OCR的應用錦集及背後技術

7.28冀永楠OCR的應用集錦及背後技術-06.jpg

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

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

冀永楠:OCR的應用錦集及背後技術

7.28冀永楠OCR的應用集錦及背後技術-07.jpg

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

冀永楠:OCR的應用錦集及背後技術

7.28冀永楠OCR的應用集錦及背後技術-08.jpg

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

冀永楠:OCR的應用錦集及背後技術

7.28冀永楠OCR的應用集錦及背後技術-09.jpg

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

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

冀永楠:OCR的應用錦集及背後技術

7.28冀永楠OCR的應用集錦及背後技術-10.jpg

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

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

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

冀永楠:OCR的應用錦集及背後技術

7.28冀永楠OCR的應用集錦及背後技術-11.jpg

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

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

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

冀永楠:OCR的應用錦集及背後技術

7.28冀永楠OCR的應用集錦及背後技術-12.jpg

這張PPT對應了剛才所講傳統的OCR的流程,先将圖檔擷取進行二制化,來提出可能是文字的部分。再去分割這些字,把這些字分割成一塊一塊,再将這些一塊一塊小的圖檔放到分類器裡面來識别這些文字是什麼字元。進行字元串彙總之後還會進行自然語言處理的修正,最後回報正确的結果。目前騰訊雲基本上已經不采用這種傳統的方式,而是以端到端的方式為主,那麼除了端到端的方式根據不同的場景應用,已經産生了一套類似工具集的方法。對于不同的應用場景,隻需從工具集裡找出最為适配這個場景的工具或者子產品,再将它們串起來進行調優,最後形成了整體識别的模型。

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

冀永楠:OCR的應用錦集及背後技術

7.28冀永楠OCR的應用集錦及背後技術-14.jpg

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

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

冀永楠:OCR的應用錦集及背後技術

7.28冀永楠OCR的應用集錦及背後技術-15.jpg

名片識别是介于格式化和非格式化通用之間的一種。因為名片它所包含的資訊是一定的,總會包含姓名包含工作地點,包括電話号碼這些。其所采用的字型各方面也比較恒定,是以說是格式化的。偏向通用是因為各部分内容的位置是不一定的。比如一些特别有創意的名片,經常會用一些符号代替本來應使用的一些字。

冀永楠:OCR的應用錦集及背後技術

7.28冀永楠OCR的應用集錦及背後技術-16.jpg

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

冀永楠:OCR的應用錦集及背後技術

7.28冀永楠OCR的應用集錦及背後技術-17.jpg

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

冀永楠:OCR的應用錦集及背後技術

7.28冀永楠OCR的應用集錦及背後技術-18.jpg

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

冀永楠:OCR的應用錦集及背後技術

7.28冀永楠OCR的應用集錦及背後技術-21.jpg

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

冀永楠:OCR的應用錦集及背後技術

7.28冀永楠OCR的應用集錦及背後技術-22.jpg

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

冀永楠:OCR的應用錦集及背後技術

7.28冀永楠OCR的應用集錦及背後技術-23.jpg

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

冀永楠:OCR的應用錦集及背後技術

7.28冀永楠OCR的應用集錦及背後技術-24.jpg

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

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

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

冀永楠:OCR的應用錦集及背後技術

7.28冀永楠OCR的應用集錦及背後技術-27.jpg

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

冀永楠:OCR的應用錦集及背後技術

7.28冀永楠OCR的應用集錦及背後技術-28.jpg

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

冀永楠:OCR的應用錦集及背後技術

7.28冀永楠OCR的應用集錦及背後技術-29.jpg

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

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

冀永楠:OCR的應用錦集及背後技術

7.28冀永楠OCR的應用集錦及背後技術-30.jpg

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

Q&A

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

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

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

A:這個有點難住我了。其實關于P處理的問題剛才那位同僚回答更為合适一點。因為我是做算法應用的。

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

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

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

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

問答

AI開發的語言要求?

相關閱讀

安全報告 | 2018上半年網際網路惡意爬蟲分析:從全景視角看爬蟲與反爬蟲

安全報告 | SSH 暴力破解趨勢:從雲平台向物聯網裝置遷移

給你的CVM安裝一個面闆吧!

此文已由作者授權騰訊雲+社群釋出,原文連結:https://cloud.tencent.com/developer/article/1182593?fromSource=waitui

歡迎大家前往騰訊雲+社群或關注雲加社群微信公衆号(QcloudCommunity),第一時間擷取更多海量技術實踐幹貨哦~

海量技術實踐經驗,盡在雲加社群!

海量技術實踐經驗,盡在雲加社群!

https://cloud.tencent.com/developer

繼續閱讀