Re: [分享] Linux 好物介紹: tesseract - 討論區

回復 [分享] Linux 好物介紹: tesseract

文章瀏覽次數 1032 文章回覆數 3

特種兵

特種兵圖像(預設)

2021-02-25 13:59:08

From:211.23.21.202

環境

其實也沒什麼,就是按照高老師的教學操作而已

只是過程中遇到一些問題,google 了一下解決而已

我的情境是想把 pdf 掃描檔公文辨識成文字檔

一些參數的詳細說明與概念,我也不懂,大家自己查吧

安裝軟體

我這邊的主機是 debian linux 10.8

繁中跟簡中的語系要自己指定安裝,不然只會有英文

這篇文章的 # 井號代表 root 而不是註解 $ 錢號代表一般使用者

先裝 tesseract
# apt install tesseract-ocr tesseract-ocr-chi-sim tesseract-ocr-chi-tra
因為 tesseract 不能直接辨識 pdf 所以需要先把 pdf 一頁頁轉成 jpeg 圖檔,所以要有 convert 工具
# apt install imagemagick

pdf 轉 jpeg

好像有 300, 400, 500, 600 越高似乎越清楚,但可能也會越占空間吧
# convert -density 600 0225.pdf -quality 90 output.jpg

如果順利的話,這時候 pdf 會被一頁頁轉成圖檔,檔名會像這樣:

output-0.jpg output-1.jpg 

但很不幸的,我這邊轉圖檔失敗了,錯誤訊息:

convert-im6.q16: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408.
convert-im6.q16: no images defined `output.jpg' @ error/convert.c/ConvertImageCommand/3258.
gs was installed

因為 imagemagick 對 pdf 檔案格式預設不能讀寫的樣子,開啟設定檔來修改:

# vim /etc/ImageMagick-6/policy.xml
把倒數第幾行關於 pdf 的設定整行換成
<policy domain="coder" rights="read | write" pattern="PDF" />

存檔離開就行了

處理圖檔

這個部驟是因為 convert 轉出來的圖檔沒有 dpi 的 metadata 資訊

如果直接辨識的話會有錯誤訊息,雖然也辨識得出來,但我不確定會不會影響結果

總之,有錯誤訊息就是想排除

錯誤訊息如下:

 Tesseract Open Source OCR Engine v4.0.0 with Leptonica                          
 Warning: Invalid resolution 0 dpi. Using 70 instead.                            
 Estimating resolution as 1169                                                   

那就處理一下所有由 pdf 轉出來的圖檔吧

$ mogrify -set units PixelsPerInch -density 300 output-*.jpg

再把這些圖檔弄成一個文字清單,這樣方便一次辨識

$ ls output-*.jpg > list

辨識文字

$ tesseract list 0225 -l chi_tra

成功訊息像這樣:

 Tesseract Open Source OCR Engine v4.0.0 with Leptonica                          
 Page 0 : output-0.jpg                                                           
 Page 1 : output-1.jpg                                                           

注意一下,語言的參數:

英文 預設值或 eng
繁中 chi_tra
簡中 chi_sim

效果

如果公文效果很差的話就不用玩了,效果讓我很滿意,大家可以試看看其他的文件。

或者請明眼人幫忙看一下原檔,比較一下正確率

公文ocr測試 檔名 ocr.zip

解壓縮後內容物:

說明 檔名
公文 pdf 掃描檔 0225.pdf
公文 jpeg 圖檔第1頁 output-0.jpg
公文 jpeg 圖檔第2頁 output-1.jpg
公文圖檔列表 list
公文 text 文字檔 0225.txt

參考連結

有興趣的可以看一下,這是我遇到問題時 google 的資料

裡面資訊會比較完整清楚

convert
pdf 轉不了圖檔
dpi 錯誤訊息

【引述《coscell》之銘言】

tesseract 是個專業的、開放原碼、命令行運作的OCR引擎,支援超過一百種語言文字辨識。

專業是說他的正確率不輸商業產品。
開原代表可以免費使用並且可能被遺直到其他作業平台。
命令行指出它可以批次處理,哪怕有上千張圖片需要辨識也是一行指令搞定。

使用語法:
tesseract 圖片檔名 輸出文字檔 -l 語言

  • 圖片檔可以是任何常見的格式
  • 輸出檔除非有特別設定,預設都會自動加上 .txt
  • 語言我們會用到的就是 正體中文 HanT, 簡體中文 HanS, 英文 eng
    如果是中英夾雜可以寫成 -l HanT+eng
    省略這個參數預設為英文

它本身不支援 pdf, 但是對於 Linux 使用者不是問題,對於掃描圖檔的 pdf 可以先轉檔:
convert 圖檔.pdf 圖片.png
它會分頁轉成 png 或其他指定的格式,我們把它做成列表:
ls *.png > list

指令李的 圖片檔名 就變成 list,
全部辨識的結果都會整合輸出到 輸出文字檔.txt

要安裝軟體請參見你的 Linux 發行版本的套件倉庫。
要知道更多使用細節, Linux 使用者都知道要去找男人 (man).

以前讀過幾本好書,可惜的是程式碼用圖片呈現只好放棄。
現在有了這個工具他們又能復活了。

留言

#1

特種兵

特種兵圖像(預設)

2021-02-25 14:02:40

From:211.23.21.202

可以把指令寫成 shell 方便自動處理

#2

阿慶

阿慶圖像

2021-03-02 09:15:18

From:211.23.21.202

這個公文後面不知是什麼
前面都正常,感覺最後辨識得怪怪的

#3

特種兵

特種兵圖像(預設)

2021-03-02 10:38:16

From:211.23.21.202

我覺得是章