在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

通過圖像處理改善OCR識別結(jié)果的實例

jf_78858299 ? 來源:OpenCV與AI深度學習 ? 作者: Color Space ? 2023-02-08 16:54 ? 次閱讀

本文主要介紹一個通過圖像處理改善OCR識別結(jié)果的實例,并給出詳細步驟和源碼。

背景介紹

在很多情況下,文字識別會遇到困難。比如非單一的背景、雜訊干擾、文字部分缺失等。

我們希望識別圖中的黑色文字(12-14),但背景較復雜且存在其他干擾,如果直接用Tesseract識別(代碼如下),識別結(jié)果為空。
# -*- coding:utf-8 -*- 
import pytesseract
from PIL import Image

# 打開圖像
image = Image.open('0.png')

# OCR識別:lang默認英文
text = pytesseract.image_to_string(image)

# 打印識別后的文本
print(text)
對這種復雜情況的文字識別,直接去識別很容易失敗。思考:可不可以通過圖像處理將我們需要的部分分割或凸顯出來再做識別?本文將以此為例做演示說明。

**詳細實現(xiàn)步驟

**

【1】OTSU二值化
image = cv2.imread('0.png')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)


_,thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)
cv2.imshow("Otsu", thresh)

【2】距離變化 + 歸一化

dist = cv2.distanceTransform(thresh, cv2.DIST_L2, 5)
dist = cv2.normalize(dist, dist, 0, 1.0, cv2.NORM_MINMAX)
dist = (dist * 255).astype("uint8")
cv2.imshow("Dist", dist)

【3】對距離變換結(jié)果圖做OTSU二值化

_,dist = cv2.threshold(dist, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
cv2.imshow("Dist Otsu", dist)

【4】形態(tài)學開運算濾除雜訊

kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (7, 7))
opening = cv2.morphologyEx(dist, cv2.MORPH_OPEN, kernel)
cv2.imshow("Opening", opening)

【5】輪廓篩選,找出文字區(qū)域


black_img = cv2.cvtColor(opening, cv2.COLOR_GRAY2BGR)


cnts = cv2.findContours(opening.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)
chars = []
# loop over the contours
for c in cnts:
  # compute the bounding box of the contour
  (x, y, w, h) = cv2.boundingRect(c)
  if w >= 35 and h >= 100:
    chars.append(c)

cv2.drawContours(black_img,chars,-1,(0,255,0),2)
cv2.imshow("chars", black_img)

【6】計算輪廓凸包,進一步獲取文字區(qū)域mask


mask = np.zeros(image.shape[:2], dtype="uint8")

cv2.drawContours(mask, [hull], -1, 255, -1)

mask = cv2.dilate(mask, None, iterations=2)

cv2.imshow("Mask", mask)

take the bitwise of the opening image and the mask to reveal just

the characters in the image

final = cv2.bitwise_and(opening, opening, mask=mask)

cv2.imshow("final", mask)

7】Tesseract文字識別


text = pytesseract.image_to_string(final)

# 打印識別后的文本

print(text)

【8】完整代碼:


#公眾號:OpenCV與AI深度學習

import cv2

import numpy as np

import imutils

import pytesseract

image = cv2.imread('0.png')

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

_,thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)

cv2.imshow("Otsu", thresh)

dist = cv2.distanceTransform(thresh, cv2.DIST_L2, 5)

dist = cv2.normalize(dist, dist, 0, 1.0, cv2.NORM_MINMAX)

dist = (dist * 255).astype("uint8")

cv2.imshow("Dist", dist)

threshold the distance transform using Otsu's method

_,dist = cv2.threshold(dist, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)

cv2.imshow("Dist Otsu", dist)

kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (7, 7))

opening = cv2.morphologyEx(dist, cv2.MORPH_OPEN, kernel)

cv2.imshow("Opening", opening)

black_img = cv2.cvtColor(opening, cv2.COLOR_GRAY2BGR)

cnts = cv2.findContours(opening.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)

cnts = imutils.grab_contours(cnts)

chars = []

loop over the contours

for c in cnts:

compute the bounding box of the contour

(x, y, w, h) = cv2.boundingRect(c)

if w >= 35 and h >= 100:

chars.append(c)

cv2.drawContours(black_img,chars,-1,(0,255,0),2)

cv2.imshow("chars", black_img)

chars = np.vstack([chars[i] for i in range(0, len(chars))])

hull = cv2.convexHull(chars)

allocate memory for the convex hull mask, draw the convex hull on

the image, and then enlarge it via a dilation

mask = np.zeros(image.shape[:2], dtype="uint8")

cv2.drawContours(mask, [hull], -1, 255, -1)

mask = cv2.dilate(mask, None, iterations=2)

cv2.imshow("Mask", mask)

take the bitwise of the opening image and the mask to reveal just

the characters in the image

final = cv2.bitwise_and(opening, opening, mask=mask)

cv2.imshow("final", final)

text = pytesseract.image_to_string(final)

打印識別后的文本

print(text)

cv2.waitKey()

cv2.destroyAllWindows()

**參考鏈接**

(1)https://pyimagesearch.com/2021/11/22/improving-ocr-results-with-basic-image-processing/

(2)https://stackoverflow.com/questions/33881175/remove-background-noise-from-image-to-make-text-more-clear-for-ocr
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    OCR文字距離太近應該如何處理

    ;最近需要做一個OCR文字識別的自動測試,之前基本沒有接觸過圖像處理的相關概念,對于純數(shù)學上的算法目前也只是大致在看。 我需要識別的圖片情況
    發(fā)表于 05-04 15:07

    OCR SDK開發(fā)者平臺推薦:OCR圖像智能字符識別技術

    為了促進業(yè)內(nèi)生態(tài)環(huán)境良好發(fā)展,幫助開發(fā)者更好的專注于自己的產(chǎn)品。想讓產(chǎn)品實現(xiàn)OCR圖像智能字符識別技術,看此帖!樓主吐血為大家找到一個集身份證識別,駕駛證
    發(fā)表于 09-25 13:48

    Labview調(diào)用OCR Training.exe實現(xiàn)字符識別

    ;這一步實現(xiàn)之后就是讀取訓練文件進行圖像字符的識別了,所需參數(shù):ROI ;圖像 ;*.abc訓練文件路徑 ;Parameters(字符識別參數(shù));簡單方式可
    發(fā)表于 08-16 17:36

    Labview怎么實現(xiàn)對OCR識別定位,在線急等

    在實際應用中進行OCR識別時,字符的位置以及角度是經(jīng)常變化的,怎么利用LabVIEW對彩色圖像進行灰度處理以及定位識別?這里圖一是彩色照片、
    發(fā)表于 11-18 15:18

    Python OCR 識別庫-ddddocr

    ;, 'rb') as f: image = f.read()res = ocr.classification(image)print(res)識別結(jié)果3n3d8342總結(jié)ddddocr 讓驗證碼變得如此簡單
    發(fā)表于 03-30 17:26

    【KV260視覺入門套件試用體驗】七、VITis AI字符和文本檢測(OCR&Textmountain)

    某些字符的圖像。輸出為包含所識別的字詞及其位置的結(jié)構。下 圖顯示了 OCR結(jié)果。 換一個帶中文的圖片試一下,結(jié)果只能
    發(fā)表于 09-26 16:31

    車號圖像處理識別系統(tǒng)的研制

    文章介紹了用于火車貨車的車皮號及自重數(shù)字圖像識別的計算機圖像處理識別系統(tǒng)的實踐。使用濾波和非線性灰度擴展,使顯示圖像獲得
    發(fā)表于 06-19 08:36 ?12次下載

    什么是OCR

    什么是OCR OCR的英文全稱: OCR是英文Optical Character Recognition的縮寫,意思是光學字符識別,也可簡單地稱為文字
    發(fā)表于 04-10 12:55 ?6984次閱讀

    基于FPGA的OCR文字識別技術的深度解析

    識別整體性能為GPU P4 130%,處理延時僅為P4的1/10,CPU的1/30。 1.文字識別技術- OCR OCR技術,通俗來講就是從
    發(fā)表于 01-26 12:19 ?4206次閱讀

    移動端證件OCR識別/安卓IOS平臺

    一、證件識別/證件OCR介紹移動端證件識別是開發(fā)的基于移動平臺的證件識別/證件OCR應用程序,支持Android、iOS等多種主流移動操作系
    發(fā)表于 06-15 15:42 ?406次閱讀

    OCR光學字符識別技術原理講解

    紙質(zhì)文檔中的文字轉(zhuǎn)換成為黑白點陣的圖像文件,并通過識別軟件將圖像中的文字轉(zhuǎn)換成文本格式,供文字處理軟件進一步編輯加工的技術。
    的頭像 發(fā)表于 03-02 13:49 ?2.1w次閱讀

    OCR識別技術

    在爬蟲對驗證碼進行破解時,經(jīng)常需要對圖片中的文字內(nèi)容進行識別,這時就需要用到OCR技術了,那么 OCR識別技術是如何實現(xiàn)對文字內(nèi)容“即拍即得”的呢?
    的頭像 發(fā)表于 03-12 09:07 ?5044次閱讀

    OCR實戰(zhàn)教程

    OCR 是光學字符識別(英語:Optical Character Recognition,OCR)是指對文本資料的圖像文件進行分析識別處理
    的頭像 發(fā)表于 02-24 10:36 ?1253次閱讀
    <b class='flag-5'>OCR</b>實戰(zhàn)教程

    OCR如何自動識別圖片文字

    OCR 是光學字符識別(英語:Optical Character Recognition,OCR)是指對文本資料的圖像文件進行分析識別處理
    的頭像 發(fā)表于 10-31 16:45 ?1001次閱讀
    <b class='flag-5'>OCR</b>如何自動<b class='flag-5'>識別</b>圖片文字

    明治案例 | PE編織袋【大視野】【OCR識別

    OCR識別技術OCR識別技術在工業(yè)生產(chǎn)中扮演著至關重要的角色。它利用先進的圖像處理技術,自動、高
    的頭像 發(fā)表于 08-13 08:25 ?659次閱讀
    明治案例 | PE編織袋【大視野】【<b class='flag-5'>OCR</b><b class='flag-5'>識別</b>】
    主站蜘蛛池模板: 亚洲六月婷婷 | 77788色淫视频免费观看 | 日韩三级小视频 | 激情在线网站 | 天堂网在线最新版www中文网 | 国产精品久久久精品三级 | 欧美三级黄视频 | 免费看大尺度视频在线观看 | 久久久五月 | 日韩一级一欧美一级国产 | 一级毛片免费全部播放 | 欧美日韩国产一区二区三区不卡 | 性日韩精品 | 亚洲第一在线视频 | 欧美性天天影视 | 午夜视频福利 | 在线电影天堂 | 2021年最热新版天堂资源中文 | 四虎影在线永久免费观看 | 四虎影院中文字幕 | 日产国产精品亚洲系列 | 色天天综合网色鬼综合 | 成人午夜大片免费看爽爽爽 | 自拍偷拍综合网 | 国产亚洲精品成人一区看片 | 午夜在线视频免费观看 | 制服丝袜在线一区 | 亚洲视频入口 | 欧美日韩国产乱了伦 | 天堂在线精品 | 美女露出扒开尿口让男人桶 | 黄色网址在线播放 | 天堂网址 | 日日摸夜夜爽 | 免费视频一级片 | 拍拍拍无挡视频免费全程1000 | 操他射他影院 | 久久青草91线频免费观看 | αv天堂| 国产午夜a理论毛片在线影院 | 四虎最新在线 |