圖片文字識別

https://blog.csdn.net/qq_37193537/article/details/81335165python

一、下載安裝包git

根據https://github.com/tesseract-ocr/tesseract/wiki,我找到非官方的安裝包,好像我只看到64位的安裝包http://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-setup-4.00.00dev.exe,下載後直接安裝便可,可是要記得你的安裝目錄,咱們等會配置環境變量要用。github

若是不是作英文的圖文識別,還須要下載其餘語言的識別包https://github.com/tesseract-ocr/tesseract/wiki/Data-Files。bash

簡體字識別包:https://raw.githubusercontent.com/tesseract-ocr/tessdata/4.00/chi_sim.traineddata編輯器

繁體字識別包:https://github.com/tesseract-ocr/tessdata/raw/4.0/chi_tra.traineddataspa

或者直接個人百度雲盤:連接:tesseract 密碼:tmdm.net

第二步:安裝命令行

直接執行下載好的tesseract-ocr-setup-4.0.0-alpha.20180109.exe,下一步、下一步安裝。安裝過程當中,會讓你安裝額外的語言包,可根據選擇下載。3d

第三步:配置環境變量code

個人是安裝在C:\Program Files (x86)\Tesseract-OCR,界面以下:

 

將「F:\Tesseract-OCR」添加到環境變量中。如圖:

 

增長一個TESSDATA_PREFIX變量名,變量值仍是個人安裝路徑F:\Tesseract-OCR\tessdata這是將語言字庫文件夾添加到變量中;


 

使用
打開命令終端,輸入:tesseract -v,能夠看到版本信息

 

用命令tesseract --list-langs來查看Tesseract-OCR支持語言。

 

將命令行切換至目標圖像文件目錄,好比咱們轉換文件爲test.png(圖片文件容許多種格式),位於C:\Users\Lian\Desktop\test;而後在命令行中輸入

tesseract test.png output_1 –l eng
【語法】:  tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile…]

imagename爲目標圖片文件名,需加格式後綴;outputbase是轉換結果文件名;lang是語言名稱(在Tesseract-OCR中tessdata文件夾可看到以eng開頭的語言文件eng.traineddata),如不標-l eng則默認爲eng。

 

打開文件output_1.txt,發現tesseract成功的將圖像轉換成152408。

 

遇到的問題:
問題1:

 

沒有配置環境變量,按上面狀況將環境變量配置好

問題2:

E:\testdir>tesseract ttest1.png test1 -l eng 

Error opening data file \Program Files (x86)\Tesseract-OCR\tessdata/eng.traineddata 

Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory of your "tessdata" directory. 

Failed loading language 'eng' 

Tesseract couldn't load any languages! 

Could not initialize tesseract. 

   錯誤信息的關鍵詞是tesseract_prefix的環境變量設置。

解決辦法:  找到testData所在的目錄,默認狀況下是在tesseract安裝的目錄,在環境變量中設置TESSDATA_PREFIX的環境變量爲testdata所在的目錄便可。 從新運行命令便可正常使用。
https://www.jianshu.com/p/96b95a6c9210

from PIL import Image import pytesseract #上面都是導包,只須要下面這一行就能實現圖片文字識別 text=pytesseract.image_to_string(Image.open('denggao.jpeg'),lang='chi_sim') print(text) 

咱們以識別詩詞爲例
下面是咱們要識別的圖片

 
denggao.JPEG

先看下效果圖

 
圖片文字識別.gif

咱們運行代碼後識別的結果,有幾個字沒有正確識別,可是大多數字都能識別出來。

風急天高猿嘯哀 渚芸胄芳少白鳥飛鳳
無邊落木蕭蕭下, 不盡長量工盲袞宕袞來
萬里悲秋常1乍窨, 百年多病獨登氤
艱難苦恨擎霜量 漂倒新停澍酉帆

一行代碼就能識別圖片,咱們背後要作些準備工做的

  • 這裏咱們須要用到兩個庫:pytesseract和PIL
  • 同時咱們還須要安裝識別引擎tesseract-ocr

下面就來說講這幾個庫的安裝,由於只有這幾個庫安裝好之後Python才能實現一行代碼實現圖片文字識別

一,pytesseract和PIL的安裝

安裝這兩個包能夠藉助pip

  • 1,命令行安裝
    pip install PIL
    pip install pytesseract
  • 2,若是你用的pycharm編輯器,就能夠直接藉助pycharm實現快速安裝。
    在pycharm的Settings設置頁按照下面步驟操做


     
    pycharm用pip安裝庫.png

    這樣就能成功安裝pytesseract,安裝PIL只須要在上面第三步裏搜索PIL並點擊安裝便可


     
    安裝成功.png

這時咱們安轉好了庫,運行下面代碼

from PIL import Image import pytesseract text=pytesseract.image_to_string(Image.open('denggao.jpeg'),lang='chi_sim') print(text) 

會報下面錯誤,錯誤緣由是:沒有安裝識別引擎tesseract-ocr

 
2.png

二,安裝識別引擎tesseract-ocr

解壓安裝tesseract-ocr後作以下操做,就能夠支持中文識別了。由於tesseract-ocr默認不支持中文識別。


 
支持中文識別.png
  • 2,安裝完成tesseract-ocr後,咱們還須要作一下配置
    在C:\Users\huxiu\AppData\Local\Programs\Python\Python35\Lib\site-packages\pytesseract找到pytesseract.py打開後作以下操做
# CHANGE THIS IF TESSERACT IS NOT IN YOUR PATH, OR IS NAMED DIFFERENTLY #tesseract_cmd = 'tesseract' tesseract_cmd = 'C:/Program Files (x86)/Tesseract-OCR/tesseract.exe' 

也能夠經過pycharm快速打開pytesseract.py

 
打開pytesseract包.png
 
6.png
 
關聯OCR和pytesseract.png

至此咱們全部的配置就完成了,運行下面代碼就能夠把杜甫的登高這首圖片詩解析成文字了

 
項目源碼.png
相關文章
相關標籤/搜索