Mac下Tesseract-OCR文字識(shí)別新手使用入門(mén)

最近要倒騰一下文字識(shí)別,直接上手iOS的識(shí)別遇到了一些困難,于是決定先在Mac上做一做,會(huì)比較簡(jiǎn)單。

有一個(gè)經(jīng)常聽(tīng)到的詞匯叫做OCR,OCR是什么呢?Optical Character Recognition,光學(xué)字符識(shí)別,是圖片文字識(shí)別的官方學(xué)術(shù)名稱(chēng)。

要做這么一個(gè)聽(tīng)起來(lái)比較復(fù)雜的事情,如果有現(xiàn)成的開(kāi)源框架那是最好的,如果你大致了解一下,就會(huì)發(fā)現(xiàn)開(kāi)源界Tesseract是用的最多的,也是大多數(shù)接觸這個(gè)領(lǐng)域的人最開(kāi)始拿來(lái)練手的東西。簡(jiǎn)單介紹一下Tesseract的歷史,其最早由HP實(shí)驗(yàn)室在1985年研發(fā),10年后,也就是1995年已經(jīng)是業(yè)內(nèi)最準(zhǔn)確的識(shí)別引擎之一了,但是HP后來(lái)放棄了OCR業(yè)務(wù),不過(guò)好消息是后來(lái)HP決定反正不用,不如開(kāi)源出來(lái),所以2005年,又是10年后,Tesseract開(kāi)源了,并且委托Google進(jìn)行改進(jìn)、優(yōu)化的工作。

所以現(xiàn)在一說(shuō)Tesseract往往看到的都是說(shuō)Google的框架,其實(shí)還有這么一段歷史在其中。

準(zhǔn)備工作

要在Mac下用Tesseract,肯定要進(jìn)行安裝,安裝Tesseract之前,我們需要做一些準(zhǔn)備工作。

Xcode Command Line Tool

首先安裝Xcode Command Line Tool,Command Line Tool是Xcode中的一款工具,從App Store下載Xcode之后,默認(rèn)沒(méi)有安裝Command Line Tool,安裝之后就可以在終端命令行中運(yùn)行一些C程序。

安裝方法很簡(jiǎn)單,打開(kāi)終端輸入:xcode-select --install,會(huì)彈出確認(rèn)窗口:

image.png

直接點(diǎn)擊安裝就可以了,一段時(shí)間之后就安裝好了,有進(jìn)度條顯示,十幾分鐘吧。檢查是否安裝成功的方法是再次在終端輸入上述命令,會(huì)提示已經(jīng)安裝過(guò)了,或者在Xcode新建工程,選擇macOS下,會(huì)多出一個(gè)Command Line Tool:

image.png

MacPorts

平常我們安裝Mac上的軟件,常用的兩種方式是App Store和dmg,除此之外,還可以用MacPorts來(lái)安裝,它就像apt-get、yum一樣,可以通過(guò)命令行快速安裝一些軟件,很方便,類(lèi)似于我們通過(guò)命令行用cocoapods來(lái)安裝第三方開(kāi)發(fā)庫(kù)。

進(jìn)入MacPorts的官網(wǎng):http://www.macports.org/

image.png

下載安裝包后安裝它,可能會(huì)要求重啟mac。

我們主要用來(lái)安裝Tesseract,其他的用法大家可以自己慢慢發(fā)掘。

安裝Tesseract

準(zhǔn)備工作完畢后,就可以安裝Tesseract了。

打開(kāi)終端輸入:sudo port install tesseract

會(huì)要求輸入電腦密碼,mac終端中輸入密碼是看不到的,只管輸入就好。

然后等待它自個(gè)去安裝一大堆依賴(lài)和Tesseract。安裝完后可以檢查一下是否安裝成功,終端輸入tesseract后回車(chē),會(huì)出來(lái)一些信息和一些配置方式,或者輸入tesseract -v,會(huì)顯示安裝的Tesseract版本信息,目前(2017.6.1)MacPorts安裝的Tesseract版本是3.04.01,不過(guò)此時(shí)github上,包括cocoapods上最新的版本已經(jīng)是4.0了 。

這時(shí)候是不是可以跑Tesseract了呢?還不行,因?yàn)門(mén)esseract是一款OCR引擎,要識(shí)別文字,一定要有語(yǔ)言庫(kù),Tesseract能夠識(shí)別100多種語(yǔ)言,語(yǔ)言庫(kù)是比較大的,它不會(huì)一開(kāi)始就都幫你安裝了,需要你按需安裝,它甚至連英語(yǔ)語(yǔ)言包都沒(méi)有默認(rèn)安裝,但是運(yùn)行程序是必須要安裝好英語(yǔ)語(yǔ)言包的,注意,是運(yùn)行程序,不是識(shí)別英語(yǔ),我覺(jué)得這一點(diǎn)特別奇怪,如果你必須要那就直接默認(rèn)自帶啊...所以我們還要安裝語(yǔ)言包。

還是在終端,輸入命令:sudo port install tesseract-<語(yǔ)言包名>,MacPorts支持的語(yǔ)言包名可以在MacPorts tesseract page查看。

注意上面命令中的尖括號(hào)并不需要輸入,如果你在命令行中包括了尖括號(hào),會(huì)顯示:

-bash: syntax error near unexpected token `newline'

尖括號(hào)是命令行命令的一種習(xí)慣表示方法,表示這里要被替換掉。比如我們?cè)诰W(wǎng)頁(yè)中找到英語(yǔ)語(yǔ)言包的名稱(chēng):

image.png

那實(shí)際上我們需要輸入的命令是:sudo port install tesseract-eng

順便我們可以把中文語(yǔ)言包也給裝了,簡(jiǎn)體中文的名稱(chēng)是"chi_sim",所以命令是:sudo port install tesseract-chi_sim

至此,Tesseract安裝完畢,可以開(kāi)始體驗(yàn)神奇了。

使用Tesseract

使用Tesseract同樣是通過(guò)命令行的方式。先準(zhǔn)備一張圖片,然后通過(guò)命令行進(jìn)入該圖片存放的位置(用cd命令)。

Tesseract的命令格式為:

tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile...]

其中有幾個(gè)參數(shù):

imagename是你要識(shí)別的圖片的名字,不需要打引號(hào),直接輸入即可。

outputbase是輸出結(jié)果文件的名字,不需要文件類(lèi)型后綴,就是txt,這個(gè)參數(shù)就是txt的文件名。

lang是要用的語(yǔ)言代碼,默認(rèn)是英語(yǔ),如果你要識(shí)別中文,就寫(xiě) -l chi_sim,如果你要中英都識(shí)別,用 + 號(hào)把語(yǔ)言代碼連起來(lái):-l chi_sim+eng。

pagesegmode是用來(lái)識(shí)別的模式,之前輸入tesseract命令時(shí)應(yīng)該也看到了,包含這些模式:

  • 0 = Orientation and script detection (OSD) only.
  • 1 = Automatic page segmentation with OSD.
  • 2 = Automatic page segmentation, but no OSD, or OCR
  • 3 = Fully automatic page segmentation, but no OSD. (Default)
  • 4 = Assume a single column of text of variable sizes.
  • 5 = Assume a single uniform block of vertically aligned text.
  • 6 = Assume a single uniform block of text.
  • 7 = Treat the image as a single text line.
  • 8 = Treat the image as a single word.
  • 9 = Treat the image as a single word in a circle.
  • 10 = Treat the image as a single character.

現(xiàn)在可以開(kāi)始演練了。

準(zhǔn)備一張英文圖片,比如:

image.png

放在下載目錄,命令行 cd Downloads 進(jìn)入下載目錄,然后輸入:

tesseract test.png out

識(shí)別完成后會(huì)在下載目錄多處一個(gè)out.txt的文件,里面包含識(shí)別出的文字:

image.png

英文還是比較準(zhǔn)的。

下面我們來(lái)識(shí)別中文,準(zhǔn)備一張中文圖片:

image.png

輸入:

tesseract test.png result -l chi_sim

也可以正確識(shí)別出來(lái)(識(shí)別后的文件為result.txt):

image.png

驚不驚喜,意不意外。但是,別看這里都識(shí)別出來(lái)了,其實(shí)中文識(shí)別率并不高,越簡(jiǎn)單、間隔越大、字體越大就識(shí)別的越好,如果是:

image.png

那么識(shí)別結(jié)果就崩了:

image.png

那怎么辦呢,折騰了一圈,結(jié)果識(shí)別出來(lái)是這個(gè)鬼樣子,機(jī)器就是厲害,懂這么多我不認(rèn)識(shí)的字。

Tesseract用來(lái)識(shí)別英語(yǔ)或者類(lèi)似的文字比較厲害,但是識(shí)別漢字這種象形文字就比較差了,不過(guò)還有得救,我們可以訓(xùn)練它,這就是Tesseract訓(xùn)練相關(guān)的知識(shí)了,之后再講。

結(jié)

通過(guò)這篇文章,即使一個(gè)純新手應(yīng)該也可以順利感受到文字識(shí)別的神奇了,但是要想效果更好,路還很長(zhǎng),共同學(xué)習(xí)吧。


查看作者首頁(yè)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容