python影像識別
python影像識別一般基礎到的就是tesseract了,在爬蟲中處理驗證碼廣泛使用。
安裝
安裝教程網上大都差不多,Windows下確實比較麻煩,涉及到各種路徑、環境變數甚至與linux不同的路徑分隔符,所以這裡的安裝是基於__Centos7__。
1. 依賴安裝
yum install -y automake autoconf libtool gcc gcc-c++
2. 安裝leptonica
Leptonica主要用於影像處理和影像分析
- 原則上所有的庫檔案都是可以直接用yum安裝的,如果想要具體的某個版本,可以前往官方源下載對應版本然後按照對應方式編譯
wget
tar -zxvf leptonica-1.74.4.tar.gz
cd leptonica-1.74.4/
./configure
make && make install
3. 安裝tesseract
其他可以在這裡下載並自行編譯,也提供直接使用的檔案。
yum install tesseract
4. 驗證安裝
tesseract --version
5. 語言包下載
前往下載相應的語言包,然後將之移動到tessdata目錄下,可以用whereis tesseract
檢視一下具體的目錄,我的是/usr/share/tesseract/tessdata/
mv *.traineddata /usr/local/share/tessdata/
6. 檢視目前已下載的語言
tesseract --list-langs
使用
# tesseract
Usage:
tesseract --help | --help-psm | --help-oem | --version
tesseract --list-langs [--tessdata-dir PATH]
tesseract --print-parameters [options...] [configfile...]
tesseract imagename|stdin outputbase|stdout [options...] [configfile...]
OCR options:
--tessdata-dir PATH Specify the location of tessdata path.
--user-words PATH Specify the location of user words file.
--user-patterns PATH Specify the location of user patterns file.
-l LANG[+LANG] Specify language(s) used for OCR.
-c VAR=VALUE Set value for config variables.
Multiple -c arguments are allowed.
--psm NUM Specify page segmentation mode.
--oem NUM Specify OCR Engine mode.
NOTE: These options must occur before any configfile.
語法
tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile...]
- imagename:圖片名字
- outputbase:指定輸出,如果希望直接輸出而不是儲存到檔案,那麼就使用 stdout,否則這個引數將會作為儲存結果的檔案的字首
-
-l
指定語言檔案,預設使用英文 -
tesseract --print-parameters
:檢視更多引數資訊 - 使用-c指定單項引數的值或者將配置寫入配置檔案放在命令最後(支援多個配置檔案)
- psm 識別影像的方式
0:定向指令碼監測(OSD)
1: 使用OSD自動分頁
2 :自動分頁,但是不使用OSD或OCR(Optical Character Recognition,光學字元識別)
3 :全自動分頁,但是沒有使用OSD(預設)
4 :假設可變大小的一個文字列。
5 :假設垂直對齊文字的單個統一塊。
6 :假設一個統一的文字塊。
7 :將影像視為單個文字行。
8 :將影像視為單個詞。
9 :將影像視為圓中的單個詞。
10 :將影像視為單個字元。
python中使用
Tesseract安裝完成後可以很方便的被Python呼叫,但是需要pillow和pytesseract的支援。
python中轉換
image_to_data(image, lang=None, config='', nice=0, output_type=Output.STRING)
- image Object,由Tesseract處理的影像的PIL Image/NumPy陣列
- lang String,Tesseract語言程式碼字串
- config String,任何其他配置字串,例如:config=’–psm 6’
- 語言檔案可以疊加,用“+”隔開
- 我們也可以在這裡進行tessdata路徑的設定,跟在config裡面即可
- 更多配置包括config和psm都和tesseract類似
例項:
流程: 開啟圖片,配置,轉換,可以透過Image的open或者cv2的imread開啟圖片,之後對圖片進行對比度增強,降噪等處理,效果會好一些。
from PIL import Image
import pytesseract
class Languages:
CHS = 'chi_sim'
ENG = 'eng'
def img_to_str(image_path, lang=Languages.ENG):
return pytesseract.image_to_string(Image.open(image_path), lang)
print(img_to_str('pic/numu.png', lang=Languages.ENG))
print(img_to_str('pic/pro.png', lang=Languages.ENG))
總結
- 簡單的文字識別效果還是不錯的,但是設計到多空行、符號等,識別效果就不是太好了,準確度方面可以透過對字型檔的訓練達到想要的效果,之後對獲取到的文字利用諸如re等各種庫進行操作,其實應用還蠻廣泛的。2. 但是它在驗證碼方面的話效果還是不錯的,驗證碼的話tesserocr也是比較方面的.
- 識別中文可能會出現編碼錯誤,這也是識別上的漏洞之一了,網上大佬們所說的改變文字的編碼似乎並不能解決問題,所以對長文字圖片處理還是不太建議直接轉換。
- 圖文處理也可以借鑑一些各平臺的API,百度、騰訊、美團都有支援.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3705/viewspace-2822897/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python實現AI影像識別-身份證識別PythonAI
- 影像識別
- orange影像識別
- 影像識別技術
- 影片監控智慧影像識別
- OCR技術-文字影像識別
- 恩墨大資料系列免費課之《影像識別揭秘-Python手寫數字識別》大資料Python
- 儀表影像識別演算法演算法
- 關於影像識別的問題
- 【堅果識別】果實識別+影像識別系統+Python+計算機課設+人工智慧課設+卷積演算法Python計算機人工智慧卷積演算法
- 使用 Nim 進行基礎影像識別
- 使用 Racket 進行基礎影像識別Racket
- 使用 OCaml 進行基礎影像識別
- 使用 Lua 進行基礎影像識別
- 批次影像識別的快速遍歷技巧
- 影像識別的視覺化解釋史視覺化
- [譯]計算機如何高效識別影像?計算機
- 百度識別例程-QT介面-識別列表-串列埠通訊-文字影像QT串列埠
- 使用F#實現基本影像識別
- 智慧影片分析ai影像精準智慧識別AI
- 談談如何使用 opencv 進行影像識別OpenCV
- 影像識別垃圾分類app的製作APP
- 影像篡改與識別(一):膠片時代
- Python 圖文識別Python
- python示例 呼叫影象識別服務識別影象Python
- 【球類識別系統】影像識別Python+卷積神經網路演算法+人工智慧+深度學習+TensorFlowPython卷積神經網路演算法人工智慧深度學習
- 使用Rust語言實現基本影像識別Rust
- 使用Scala語言實現基本影像識別
- 使用Haskell語言實現基本影像識別Haskell
- 使用Lua語言實現基本影像識別
- 卷積神經網路進行影像識別卷積神經網路
- 用影像識別玩Chrome斷網小遊戲Chrome遊戲
- AppUI 自動化中的影像識別的使用APPUI
- 製作一個Node命令列影像識別工具命令列
- python的識別符號Python符號
- 歌曲識別-dejavu-pythonPython
- 模式識別課程大作業 Shopee 商品影像檢索模式
- 影像識別(CV)在房地產領域的應用