文件掃瞄OCR識別

2021-10-05 20:38:28 字數 3948 閱讀 9842

1、邊緣檢測cv2.canny()函式

1、cv2.canny(

)函式原型

edge = cv2.canny(image, threshold1, threshold2[

, edges[

, aperturesize[

, l2gradient ]]]

)image:原影象

threshold1,

2 是閾值,兩個閾值相互作用

大部分情況下這三個引數就夠了,如果有需要可以新增

針對這個專案:

edged = cv2.canny(image,70,

200) 實現邊緣檢測之前通常進行gauss降噪

2、邊緣檢測與輪廓檢測之間的區別:

1)、邊緣檢測是影象處理和計算機視覺中的基本問題,邊緣檢測的目的是標識數字影象中亮度變化明顯的點。影象屬性中的顯著變化通常來反映了屬性的重要事件和變化。 這些包括(i)深度上的不連續自、(ii)表面方向不連續、(iii)物質屬性變化和(iv)場景照明變化。 邊緣檢測是影象處理和計算機視覺中,尤其是特徵提提取中的乙個研究領域。

2)、輪廓提取是提取出想要得到的輪廓 輪廓可能是邊緣的一部分。

3、image 模組

image 模組

image 模組提供了同名的類用來表示pil的影象。image模組還提供了許多任務廠(factory)函式,包塊從檔案載入影象的函式,以及建立新影象的函式。

image.open(filename)

image.new()

4、程式原始碼

import argparse

import numpy as np

import cv2

from functions import

*from pil import image

import pytesseract

import os

from imutils import contours

# from pyimagesearch.transform import four_point_transform

ap = argparse.argumentparser(

)ap.add_argument(

'-i'

,'--image'

,required =

true

,help

="path to the image to be scanned"

)args =

vars

(ap.parse_args())

# 生成除錯引數的字典

image = cv2.imread(args[

'image'])

orig = image.copy(

)ratio = image.shape[0]

/500.0

image = resize(image.copy(

),height=

500)

# cv_show('image',image)

gray = cv2.cvtcolor(image,cv2.color_bgr2gray)

# cv_show('gray',gray)

gauss = cv2.gaussianblur(gray,(5

,5),

0)# cv_show('gauss',gauss)

edged = cv2.canny(gauss,70,

200)

# 邊緣檢測

cv_show(

'edged'

,edged)

print

("step 1: 邊緣檢測"

)# 輪廓檢測

cnts = cv2.findcontours(edged.copy()[

0]cnts =

sorted

(cnts,key=cv2.contourarea,reverse=

true)[

:5]# 將輪廓排序

cv2.drawcontours(image, cnts,-1

,(0,

255,0)

,2)cv_show(

'ss'

,image)

for c in cnts:

peri = cv2.arclength(c,

true

)# true 代表是乙個閉集 c:代表輸入的點集

0.02

*peri,

true

)# 0.02精度正好,但是如果對於0.2的話精度太大,可能顯示不出來

print(1

)iflen==4:

break

print

("step 2 展示輪廓"

)cv2.drawcontours(image,

[screencnt],-

1,(0

,255,0

),2)

cv_show(

'image_lunkuo'

,image)

# 透視變換

warped = four_point_transform(orig, screencnt.reshape(4,

2)* ratio)

# 二值處理

# 展示結果

print

("step 3: 變換"

)cv2.imshow(

"original"

, resize(orig, height =

650)

)cv2.imshow(

"scanned"

, resize(ref, height =

650)

)cv2.waitkey(0)

"""practice: 檢測結果的準確性

)# 所儲存的

gray = cv2.cvtcolor(image, cv2.color_bgr2gray)

if preprocess ==

"thresh"

: gray = cv2.threshold(gray,0,

255, cv2.thresh_binary | cv2.thresh_otsu)[1

]if preprocess ==

"blur"

: gray = cv2.medianblur(gray,3)

filename =

"{}.png"

.format

(os.getpid())

cv2.imwrite(filename, gray)

text = pytesseract.image_to_string(image.

open

(filename)

)print

(text)

os.remove(filename)

# 用於移除資料夾

cv2.imshow(

"image"

, image)

cv2.imshow(

"output"

, gray)

cv2.waitkey(

0)

02 文件掃瞄OCR識別

一 主要 import cv2 as cv import numpy as np import matplotlib.pyplot as plt defimg show img name,img cv.imshow img name,img cv.waitkey 0 cv.destroyallwin...

OCR應用(證件識別 文件識別)

1 ocr識別 證件識別 高效 識別率高達99.7 單張識別速度小於1秒,領先業內 方便 該識別服務更新維護方便,企業可自行進行更新維護 全面 可識別身份證 護照 行駛證 駕駛證等30多種證件 1 希望將紙質書籍或紙質資料中的文字資訊,進行ocr識別轉換成可編輯的電子版檔案 2 希望將各類證件 如身...

OCR技術識別文件的技術

ocr技術識別文件的概括 我們常說的ocr 文字識別 ocr技術識別文件是指通過電子裝置等將紙質上的文字識別出來,形成可編輯的文字。ocr技術識別文件的流程 常規的ocr文字識別處理的過程包括 1 影象輸入 預處理 二值化 雜訊去除 傾斜較正 2 版面分析 把頁面分為橫排文字 豎排文字 等不同區域,...