OCR學習記錄

2021-09-01 20:21:52 字數 2386 閱讀 4595

最近對驗證碼識別做了一些研究,主要是ocr方向的,一些總結記錄一下。識別captcha後面跟了很多參考文章都講解的很詳細了,做orc不難,難點在於如何提高識別率。基本流程如下:

1.原圖

2.預處理(去噪點)

3.標準化(灰度變換,二值化,歸一化)

4.image segment(個人感覺這個比較難,有很多演算法,比如垂直投影直方圖,knn,color filling)

5.提取特徵

6.機器學習

7.識別

總之ocr是乙個很有意思的研究課題,包含大量對計算機圖形影象,機器學習,神經網路方面的研究,可以作為乙個問題點來研究機器學習。網上已經有乙個學習好的手寫體樣本庫mnist可供玩耍。附件另有乙份是vsm向量空間模型理論的**,清楚的講解了如何計算兩個物件之間的相似性。

0.pil簡單的api使用:

# -*- coding: utf-8 -*-

path = "/home/yunpeng/test4/data/4399/******/8.png"

from pil import image,imagedraw

im =image.open(path)

im = im.convert('l')

#二值化

print 'img info:',im.format,im.size,im.mode

width,height = im.size

for x in xrange(width):

for y in xrange(height):

p= im.getpixel((x, y))

if p>90:

im.putpixel((x,y),255)

else:

im.putpixel((x,y),0)

#去頭去尾

mlist = set()

p = im.load()

for x in xrange(width):

for y in xrange(height):

p= im.getpixel((x, y))

if p<200:

mlist.add(x)

mlist = list(mlist)

left= mlist[:1][0]

right = mlist[len(mlist)-1:][0]

box = (left, 0, right, height)

im = im.crop(box)

width,height = im.size

ps = [0]*width

for x in xrange(width):

for y in xrange(height):

p= im.getpixel((x, y))

if p==0:

ps[x]=ps[x]+4

image = image.new('rgb',(200,200),(255,255,255))

draw = imagedraw.draw(image)

ps_width = len(ps)

for k in xrange(ps_width):

source = (k,199) #起點座標y=99, x=[0,1,2....]

target = (k,199-ps[k]) #終點座標y=255-a[x],a[x]的最大數值是200,x=[0,1,2....]

draw.line([source, target], (100,100,100),1)

image.show()

im.show()

1.什麼是灰度變換?

photoshop裡的灰度變換可以使r,g,b 3色按任何比例增強再混合。黑白的黑白變換叫灰度變換,彩色的色彩變換也叫灰度變換。

比如線性變換

可以用乙個線性函式:f(x,y)=a'+(b'-a')/(b-a)×(f(x,y)-a)

f(x,y)代表乙個象素

[a,b]是原始影象的灰度範圍,[a',b']是變換後新影象的灰度範圍

用這個線性函式分別對r,g,b分量進行變換可以起到單色增強的目的,然後再混合輸出。

如果b'-a' > b-a ,則使得影象灰度範圍增大,即對比度增大,影象會變得清晰

如果b'-a' < b-a ,則使得影象灰度範圍縮小,即對比度減小。

ps: pil可以通過im.convert('l')

2.什麼是直方圖?

直方圖就是統計影象中畫素點為某個顏色值的個數。

參考:使用pil計算直方圖並顯示

3.tesseract如何安裝?

參考:ubuntu安裝tesseract 進行ocr識別

使用tesseract-ocr破解**驗證碼

4. 參考資料

深度學習之OCR相關經驗記錄

q1 基於深度學習的文字檢測方法有哪幾種?各有什麼優缺點?a 常用的基於深度學習的文字檢測方法一般可以分為基於回歸的 基於分割的兩大類,當然還有一些將兩者進行結合的方法。1 基於回歸的方法分為box回歸和畫素值回歸。a.採用box回歸的方法主要有ctpn textbox系列和east,這類演算法對規...

OCR 訓練記錄2

第13次訓練 增加拉伸壓縮的多樣性 scale list1 0.7,0.75,0.8,0.85,0.9,0.95 scale list2 1 x for x in scale list1 結束標誌 平均acc達到0.999 在真實資料上測試結果 字元準確率 95 word 準確率 75 真實樣本總數...

OCR深度學習應用

ocr技術識別文件的概括 我們常說的ocr 文字識別 ocr技術識別文件是指通過電子裝置等將紙質上的文字識別出來,形成可編輯的文字。ocr技術識別文件的流程 常規的ocr文字識別處理的過程包括 3 設定語種 選擇需要什麼ocr語種的引擎程式 4 輸出結果 輸出ocr識別結果為原版原樣的優質檔案 oc...