Python Tesseract 圖片識別-小操練

小科普
光學字符識別(OCR,Optical Character Recognition)是指對文本資料進行掃描,而後對圖像文件進行分析處理,獲取文字及版面信息.
Tesseract的OCR引擎最早由HP實驗室於1985年研發,2005年,交由Google對Tesseract進行改進、優化工做。
準備工做

1.PIL 、Pytesseractsegmentfault

from PIL import Image
from pytesseract import image_to_string

2.安裝引擎 Tesseract-OCRapp

ok 用畫圖工具整張簡單的圖片(vm3.png)小試牛刀

圖片描述

上代碼

from PIL import Image
from pytesseract import image_to_string

img = Image.open("vm3.png");
text = image_to_string(img)
print(text)

別走,留步,真的只有那麼多,不信看結果工具

圖片描述

支持中文

but,Tesseract是老外開發的,默認不支持中文,須要咱們加個中文語言包
將文件chi_sim.traineddata (密碼:3mzq) 放到安裝目錄:Tesseract-OCR\tessdata文件夾內,再整張圖優化

圖片描述

代碼騷做修改(,lang='chi_sim')便可spa

from PIL import Image
from pytesseract import image_to_string

img = Image.open("vm3.png");
text = image_to_string(img,lang='chi_sim')
print(text)

沒毛病.net

圖片描述

騷微複雜圖像處理

其實,複雜圖片的來不了,須要處理一下,好比這張圖片:
圖片描述3d

這樣處理:code

img = Image.open("vm.png");
imgry = img.convert("L")
threshold = 140
table = []
for i in range(256):
    if i < threshold:
        table.append(0)
    else:
        table.append(1)
out = imgry.point(table, '1')
out.show()

show()一下處理後的結果:blog

圖片描述

最後,整合一下:圖片

img = Image.open("vm.png");
imgry = img.convert("L")
threshold = 140
table = []
for i in range(256):
    if i < threshold:
        table.append(0)
    else:
        table.append(1)
out = imgry.point(table, '1')
text = image_to_string(out)
print(text)

圖片描述

我就知道你會回來,若是你在運行中遇到如下問題:


tesseract is not installed or it's not in your path

一圖解萬愁
圖片描述


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!

添加環境變量:

變量名:TESSDATA_PREFIX
變量值:testdata的路徑

若是加了還不行,重啓電腦!

若是還不行,試試 百度OCR的吧
若是你用來做爲驗證碼識別。可能會用到 截屏和裁剪
相關文章
相關標籤/搜索