2014年6月28日 星期六

四種免費中文ocr文字辨識的測試與使用

因為工作需要,必須做一些中文文字的辨識(OCR),找了許多資料,找到了一些免費軟體,我測試了四種均是免費OCR軟體(除了附加在ms office那個,當然Office是要錢的,不過我想大部分人都有吧,所以也把它的附加功能列入免費軟體)。
這些辨識工具,在不同情況下,有不同的使用方式,有些工具如果操作錯誤,還會影響辨識效果,有些安裝時沒注意到細節,還會一直出現錯誤,因為花了很多功夫,試了很多軟體,所以乾脆作成記錄,方便以後有同樣需求時參考,也提供有相同需求的朋友一些方向,不用像我走了許多冤枉路,浪費了許多時間。

這裡所提供的文字辨識功能均支援中文辨識(當然也支援英文),我所測試的均以繁體中文為主,唯一例外的是Capture2Text,因找到資料說它對簡體字的辨識效果不錯,因此也特別測試了一下,如果您不想看下面冗長的文章,以下的注意事項及使用心得,可以先給您一個快速的參考:

注意事項:

*要使用JOCR或Office來辨識:
1)必須在安裝office時,選擇安裝 Microsoft Office Document Imaging,(最好選全部安裝,因為裡面的Microsoft Office Document Image Writer在不是使用Jocr的情況,而是用Microsoft Office Document Imaging 時會用到)

2)據找到的資料指出要在Office 2003以上的版本才可使用。(我實測office xp不能使用,我沒有Office 2003,直接使用Office 2007)

3)office 2007要安裝service pack 3,才能正常使用。

*中文原始文件的文字方向很重要,會大大的影響辨識結果,我所測試的文字均是橫向,Google Doc直接在其說明資料,表明不支援直行中文字辨識,Capture2Text有選項可以調整橫向或直向中文字。


使用心得:

*在幾個免費的ocr軟體中,操作上最沒有問題的是Capture2Text,在操作過程中,沒有出現異常錯誤,

*在我測試的條件下,辨識率最好的是JOCR及Capture2Text(只限於辨識簡體中文時),辨識效果最不佳的是Google 雲端硬碟,特別強調我的測試條件,是因為這只是我工作過程中的附帶記錄,所以測試OCR的原始樣本並不多,只是我工作上使用到的情況,大都是直接在螢幕上擷取文字來辨識,並未用掃描器或數位相機從紙本文件中辨識,這也可能是Google雲端及Office Document Imaging的辨識效果較差的原因(文末有同一原始文件,各個軟體的辨識結果供參考,請參看辨識結果比一比)。

*而辨識速度,除了Capture2Text可以感覺到慢了一些,其他的看不出明顯的差異。

*操作最煩瑣的是使用Office的 Microsoft Office Document Imaging來作辨識,它必須先把原始圖檔用一個虛擬印表機轉成tif檔,再到Microsoft Office Document Imaging進行辨識。

綜合以上,我認為用Jocr最優秀,它檔案極小,操作簡單,辨識率也不錯,速度也還好,但像Jocr或Capture2Text是直接在螢幕上選取一個區域作辨識,如果是多個文件(圖檔),或是原始圖檔超過一個畫面大小,就會比較麻煩。
而Google或Office是直接讀取圖檔,可以一次讀進一個或多個影像檔進行辨識,不必在螢幕上選取操作,在多檔或批次作業上佔優勢。

反之Jocr及Capture2Text雖然不利於多檔或大檔案辨識,但其優點就是,在螢幕上看到的影像文字,只要一選取,立即辨識,方便又快速,像有時候遇到電腦顯示的錯誤訊息,或視窗上的文字,想在搜尋引擎上尋找相關資料,如果萬一不能用複製,貼上來處理,就必須親自打字,如果用Jocr或Capture2Text就可以即時辨識成文字來運用。


以下逐一說明操作步驟:

JOcr

下載:JOCR 1.0 Download (Free) - JOCR.exe

JOCR是一個可以辨識圖片裡的文字並存成文字檔的免費軟體,不過其實它只是借用Microsoft Office的殼,實際的功能是Microsoft Office提供的, 因此它的檔案極小,不到100K。

使用前你的office 必須安裝Microsoft Office Document Imaging,如果安裝office時,沒有安裝的話,請把您的office光碟拿出來,增加安裝此一項目, 如下圖所示。
2014-06-05 08 49 50.png

至於那一版的Microsoft Office才有提供呢,我目前使用的Office XP找不到此功能,應該是Microsoft Office 2003以上的版本才有,(我另外找到Microsoft Office 2007有提供),JOCR的操作非常簡單,它不用安裝,只要在下載回來的檔案上按兩下滑鼠左鍵即可執行;還有它的檔案非常小,大約只有80K左右。

使用JOcr前先到Ms Office 工具中作語言項目的設定,從程式集進入「Microsoft Office->Microsoft Office工具->Microsoft Office Document Imaging 」

2014-06-05 06 33 46.png


進入後從工具->選項->OCR 選擇您要的語言,這裡當然選擇中文(繁體)如下圖:
2014-06-05 08 21 56.png


上述設定完成後,接著啟動JOCR,先按下「Capture Region」,然後選取圖片中你想辨識的區域,接著選擇辨識的語言,並按下「Recognize」就會開始辨識,辨識完成的文字會出現在記事本內, 如果您出現如下圖的錯誤訊息,是要你到Ms Office 工具中作語言項目的設定,可是我已照著設定,仍不能正常工作, 後來我安裝了Office 2007 Service Pack 3,就可正常使用了。

2014-06-05 08 23 32.png




直接使用Office內 Microsoft Office Document Imaging的OCR功能


如同前文所講,JOcr只是借用Office的功能,提供一個較方便的方式來作辨識,那當然也可以直接使用Office內的功能來完成,雖然Office不是免費的軟體,但是應該大部分的人都有安裝。使用方法如下:

先安裝 Microsoft Office Document Image Writer, 如上面第一個圖中所示,如果您有全部安裝Microsoft Office Document Imaging的話,也會安裝Microsoft Office Document Image Writer,安裝完成後會在系統的印表機中多出一個Microsoft Office Document Image Writer的虛擬印表機。


使用步驟
1) 先在檔案總管找出要辨識的圖片(不同於JOCR可以在螢幕上直接指定一塊區域來辨識,它辨識的是整個圖檔),請在圖片上按滑鼠右鍵,選擇[列印],出現相片列印精靈後,點擊[下一步],選擇印表機時,請選擇Microsoft Office Document Image Writer的印表機。

2) 點擊[列印喜好設定],定好要印的紙張大小(建議用A3紙),如果圖片文字方向不對,請選好直印或橫印加以調整,選擇好之後點擊[確定],點擊[下一步]。

3)點選[下一步],存成tif格式檔案, (這個虛擬印表機事實上是一個轉檔的功能,將你的圖片轉成tif檔,以方便下一步的辨識 )

4)在剛剛存好檔的 tif 檔,使用 Microsoft Office Document Imaging 來開啟(操作方式上面JOCR時已提到過,程式集進入「Microsoft Office->Microsoft Office工具->Microsoft Office Document Imaging 」)。


5)進入後選檔案->開啟,打開上述轉好的tif檔
打開後可看到如下圖的縮圖,再縮圖上按右鍵,還有一些功能選項,如果在上文列印(轉tif檔)原圖時,沒有選好紙張方向,在此處也可以旋轉頁面來調整。

2014-06-16_105532.png

再進入「工具->使用OCR 辨識文字」,辨識完成後,並不會出現任何完成的訊息,而是在左邊的預覽圖右下角就會出現已辨識的圖樣,如下圖紅框內的圖示。

2014-06-16_105652.png

再點「工具 -> 傳送文字到 Word」。


Capture2Text


Capture2Text個人認為是一款還算不錯的免費文字辨識軟體,它可以像JOcr一樣直接在螢幕上,選定一個區域作辨認,又不必像JOcr必須背著Office這個大包袱,另一方面,它也不像直接在Office內作辨識那麼繁瑣,但有一個問題,就是它的辨識速度較慢,辨識簡體中文較準確,繁體中文差了一些,不過目前很多pdf或圖片檔的免費電子書,幾乎都是簡體中文,拿它來辨識,應該是非常適合,所以這裡也一並介紹。


Capture2Text下載點/

各種語言的tessdata pack(包含中文繁簡體)

簡體中文的nhocr pack (如果是辨識簡體,建議下載這個,辨識率較高)

這裡也提供個人已壓縮好的Capture2Text,含繁簡體(87M),當然主程式本來就含有日英德法西班牙意大利文,如果想省事的人可直接下這套解壓即可使用, 下載點:
http://pan.baidu.com/s/1hqFZWMC

如果不是下載我自製的懶人包,這裡提供使用繁簡體nhocr的使用方式:
下載下來主程式以後,直接解壓縮,簡體中文的nhocr pack也下載下來,一樣解壓後,將nhocr pack內的檔案全部copy到Capture2Text主程式內的\Utils\nhocr\Dic的資料夾內。
然後直接執行Capture2Text內的Capture2Text,exe執行檔,在右下工作列中會出現Capture2Text的圖示,在圖示上點右鍵,選擇ocr language,再挑選欲辨識的語言。

2014-06-05 19 00 56.png

(如果要辨識繁體中文,只能下載tessdata pack,因為nhocr沒有繁體中文, 請copy 到\Utils\tesseract\tessdata資料夾內,其他步驟與上相同)



要開始辨識時,請先將鼠標移到您要辨識螢幕區域的左上角,按下Windows鍵+Q,然後直接拖動滑鼠(不用按滑鼠鍵),圈出一個藍色的矩形範圍(如下圖)。

2014-06-05 19 07 04.png


這個範圍就是您要作辨識的區域,此時你可以用空白鍵切換左上,右下角,再拖動滑鼠改變選取區大小,也可以按下滑鼠右鍵,拖動以移動整個選取區,還可以用方向鍵調整選取大小,區域選定好以後,再次按下Windows鍵+Q(或滑鼠左鍵),Capture2Text就開始辨識作業,辨識速度取決您的電腦速度,辨識完成後,會彈出一個視窗,成功辨識的文字會在視窗內,也會放在剪貼薄內,要運用直接貼上即可。

下面兩個圖分別是簡體繁體中文的辨識效果,在popup result的結果視窗中,可以看到簡體(選用Chinese-NHocr)比繁體效果要好很多,
以一個免費的ocr軟體來說,乍看之下似乎有許多字未能正確辨識,但這裡的例子是直接選取螢幕的文字作測試,本來解析度就不太高,如果原始圖片或pdf上的圖片文字解析度比螢幕高,或字體大小比較大,也許效果會好很多。


簡體中文字的辨識效果:
2014-06-05 18 47 22.png

繁體中文字的辨識效果:
2014-06-05 18 50 19.png

另外在設定的地方(工作列圖示->右鍵->perferences)。可進行一些設定,其中ocr頁面有幾個值得注意的地方:
1)Text Direction選取文字的方向,如果方向錯的話,辨識結果會非常差,要特別注意。
另外ocr-pre-processing如果勾選會增加辨識時間,但辨識度會提高許多。

2014-06-05 18 57 11.png



Google 文件的OCR功能

以上介紹的幾種OCR功能均是借用軟體來完成,但臨時找不到適合的軟體,也可以利用Google雲端硬碟上的OCR功能,它一樣也支持中文文字辨識。
使用方法如下:
前往Google Doc網站:
https://drive.google.com/

按下上傳文件圖示,再選取->檔案

2014-06-15_140028.png


在上傳設定中選擇->「將PDF檔案或圖片,...轉為Google文件」,勾選此一選項將使Google Doc會進行OCR辨識作業。
2014-06-15 11 11 40.png


因為這些圖是我直接從螢幕擷取下來的,可能是解析度太差了,第一次除了原圖檔外,未辨識出出任何文字
2014-06-15 11 28 02.png

第二次我把原來的文字放大一些再進行擷取,結果嚇了一大跳,這是什麼情況,是有辨識出一些文字,但Google文件把字放的超大的,所以也看不出OCR的效果。
2014-06-15 11 28 40.png
我手動把字縮小一些,才看出原貌,這次辨識的很不錯,但不知為何只辨識出一部分,不知是否Google Doc把字放大了,導致辨識不全,因為Google Doc強調它除了能辨識出文字之外,還能辨識出字體,如斜體,粗體等,可能功能太多反而出現不能預期的錯誤。
(除了以上的測試,我還使用不同擷圖軟體,picpick及faststone分別擷取png檔,將dpi品質調高到500,又試過jpeg的品質調為最佳,擷出來的圖檔,都不能辨認,只有把原始文字放大,才認得出來)

2014-06-15 11 29 08.png


免費中文OCR軟體-辨識結果比一比

以下是同一段中文字,使用不同免費ocr軟件的辨識結果,可以見到JOCR真的是最優的,同時也很遺憾Google Doc又未識別出任何文字.可能是這種直接擷取螢幕文字的方式,真的對Google Doc較不能適應吧! (Google Doc我是使用擷圖軟體,分別擷取png檔,將dpi品質調高到500,又試過jpeg的品質調為最佳,擷出來的圖檔,都不能辨認,只有把原始文字放大,才認得出來)
2014-06-15_214021.png

以上就是針對幾個免費的中文ocr軟體的比較與測試報告,希望對大家有所助益。


參考:
The 3 Best Free OCR Tools To Convert Your Files Back Into Editable Documents

Convert screenshots to text with Capture2Text, a free optical character recognition (OCR) app