欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python Opencv實(shí)戰(zhàn)之文字檢測(cè)OCR

 更新時(shí)間:2022年08月31日 15:20:24   作者:夏天是冰紅茶  
這篇文章主要為大家詳細(xì)介紹了如何利用Python Opencv實(shí)現(xiàn)文字檢測(cè)OCR功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下

1.相關(guān)函數(shù)的講解

image_to_data()的輸出結(jié)果是表格形式,輸出變量的類型依舊是字符串。

你會(huì)得到一個(gè)這樣的列表['level', 'page_num', 'block_num', 'par_num', 'line_num', 'word_num', 'left', 'top', 'width', 'height', 'conf', 'text'],我們逐個(gè)解釋下:

  • level,當(dāng)前項(xiàng)的層級(jí);
  • page_num,當(dāng)前項(xiàng)所屬頁,一般情況下,單張圖片的內(nèi)容均會(huì)被分在同一個(gè)頁;
  • block_num ,當(dāng)前項(xiàng)所屬塊,Tesseract會(huì)將圖像分割為多個(gè)不同的block,block會(huì)出現(xiàn)1,2,3……等等值;   
  • par_num,當(dāng)前圖像中文字的段落分類;
  • line_num,當(dāng)前項(xiàng)所屬行;
  • word_num,為同一行中當(dāng)前項(xiàng)所屬的單詞序號(hào);
  • left\ top\ width\ height,分別為當(dāng)前項(xiàng)所在矩形區(qū)域的左上角坐標(biāo)、寬度和高度;
  • conf,當(dāng)前檢測(cè)字符的置信度,表示項(xiàng)無文字,值為-1,若Tesseract認(rèn)為當(dāng)前區(qū)域有文字,則其值得范圍為0~100;
  • text,即為當(dāng)前項(xiàng)的文本,若無文字此項(xiàng)為空。

那么關(guān)于enumerate()函數(shù),大家可以看看此文。

詳解Python中enumerate函數(shù)的使用

2.代碼展示

Detecting Words

import cv2
import pytesseract
import numpy as np
from PIL import ImageGrab
import time
 
 
pytesseract.pytesseract.tesseract_cmd = 'E:\pythonProject\Github\Tesseract-OCR\\tesseract.exe'
img = cv2.imread('1.png')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
 
##############################################
##### Detecting Words  ######
##############################################
 #[   0          1           2           3           4          5         6       7       8        9        10       11 ]
 #['level', 'page_num', 'block_num', 'par_num', 'line_num', 'word_num', 'left', 'top', 'width', 'height', 'conf', 'text']
 boxes = pytesseract.image_to_data(img)
 for a,b in enumerate(boxes.splitlines()):
        print(b)
         if a!=0:
             b = b.split()
             if len(b)==12:
                 x,y,w,h = int(b[6]),int(b[7]),int(b[8]),int(b[9])
                 cv2.putText(img,b[11],(x,y-5),cv2.FONT_HERSHEY_SIMPLEX,1,(50,50,255),2)
                 cv2.rectangle(img, (x,y), (x+w, y+h), (50, 50, 255), 2)
 
cv2.imshow('img', img)
cv2.waitKey(0)

Detecting ONLY Digits

import cv2
import pytesseract
import numpy as np
from PIL import ImageGrab
import time
 
 
pytesseract.pytesseract.tesseract_cmd = 'E:\pythonProject\Github\Tesseract-OCR\\tesseract.exe'
img = cv2.imread('1.png')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
 
##############################################
##### Detecting ONLY Digits  ######
##############################################
 hImg, wImg,_ = img.shape
 conf = r'--oem 3 --psm 6 outputbase digits'
 boxes = pytesseract.image_to_boxes(img,config=conf)
 for b in boxes.splitlines():
     print(b)
     b = b.split(' ')
     print(b)
     x, y, w, h = int(b[1]), int(b[2]), int(b[3]), int(b[4])
     cv2.rectangle(img, (x,hImg- y), (w,hImg- h), (50, 50, 255), 2)
     cv2.putText(img,b[0],(x,hImg- y+25),cv2.FONT_HERSHEY_SIMPLEX,1,(50,50,255),2)
 
cv2.imshow('img', img)
cv2.waitKey(0)

3.問題敘述

首先,我遇到的問題有

(1)無效的TeserAct版本:“TeserAct3.02”

 可能是此版本太低了,但我找了找新的版本,在此更新一下路徑:

點(diǎn)擊此網(wǎng)址  Home · UB-Mannheim/tesseract Wiki · GitHub

自行選擇合適的就可以了。

(2)識(shí)別效果差

可以看到,將本來不是數(shù)字的字母也強(qiáng)行識(shí)別出來了,這簡(jiǎn)直說不過去了。

最后我們看看更改后的效果:

cool,非常的棒,快去試試吧!

對(duì)于數(shù)字又強(qiáng)差人意了,所以說它這個(gè)本身還是存在一點(diǎn)的問題。我覺得影響不大,你覺得不舒服,可以換張圖試試。

4.image_to_data()配置講解

oem講解

OEM _ TESSERACТ_ ONLY      只以最快的速度運(yùn)行Tesseract

OEM _ CUBE _ ONLY        僅運(yùn)行多維數(shù)據(jù)集-精度更高,但速度更慢

OEM _ TESSERACT _ CUBE _ cOMBINED         同時(shí)運(yùn)行并組合結(jié)果-最佳精度

OEM _ DEFAULT     在調(diào)用init_*0時(shí)指定此模式,以指示應(yīng)根據(jù)特定于語言的配置中的變量自動(dòng)推斷上述任何模式。命令行配置,或者如果沒有在上面任何一項(xiàng)中指定,則應(yīng)設(shè)置為默認(rèn)的OEM_ TESSERACT_ ONLY。

psm講解

PSM _ OSD _ ONLY          僅用于方向和腳本檢測(cè)。

PSM _ AUTO _ OSD            帶有方向和腳本檢測(cè)的自動(dòng)頁面分割。(OSD)

PSM _ AUTO _ ONLY            自動(dòng)頁面分割,但沒有OSD或OCR。                              PSM _ AUTO              完全自動(dòng)頁面分割,但沒有OSD。

PSM _ SINGLE _ COLUMN          假設(shè)一列大小可變的文本。

PSM _ SINGLE _ BLOCK _ VERT _ TEXT         假設(shè)一個(gè)統(tǒng)一的垂直對(duì)齊文本塊。

PSM _ SINGLE _ BLOCK          假設(shè)一個(gè)統(tǒng)一的文本塊(默認(rèn)值)

PSM _ SINGLE _ LINE          將圖像視為單個(gè)文本行。

PSM _ SINGLE _ WORD          將圖像視為單個(gè)單詞。

PSM _ CIRCLE _ WORD         將圖像視為圓圈中的單個(gè)單詞。

PSM _ SINGLE _ CHAR         將圖像視為單個(gè)字符。

PSM _ SPARSE _ TEXT        在沒有特定順序的情況下盡可能多地查找文本。

PSM _ SPARSE _ TEXT _ OSD         具有方向和腳本檢測(cè)的稀疏文本。

PSM _ RAW _ LINE           將圖像視為單個(gè)文本行,繞過特定于Tesseract的黑客攻擊。

5.項(xiàng)目拓展

import cv2
import pytesseract
import numpy as np
from PIL import ImageGrab
import time
 
pytesseract.pytesseract.tesseract_cmd = 'E:\pythonProject\Github\Tesseract-OCR\\tesseract.exe'
img = cv2.imread('1.png')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
cap = cv2.VideoCapture(0)
cap.set(3,640)
cap.set(4,480)
def captureScreen(bbox=(300,300,1500,1000)):
    capScr = np.array(ImageGrab.grab(bbox))
    capScr = cv2.cvtColor(capScr, cv2.COLOR_RGB2BGR)
    return capScr
while True:
    timer = cv2.getTickCount()
    _,img = cap.read()
    #img = captureScreen()
    #DETECTING CHARACTERES
    hImg, wImg,_ = img.shape
    boxes = pytesseract.image_to_boxes(img)
    for b in boxes.splitlines():
        #print(b)
        b = b.split(' ')
        #print(b)
        x, y, w, h = int(b[1]), int(b[2]), int(b[3]), int(b[4])
        cv2.rectangle(img, (x,hImg- y), (w,hImg- h), (50, 50, 255), 2)
        cv2.putText(img,b[0],(x,hImg- y+25),cv2.FONT_HERSHEY_SIMPLEX,1,(50,50,255),2)
    fps = cv2.getTickFrequency() / (cv2.getTickCount() - timer);
    #cv2.putText(img, str(int(fps)), (75, 40), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (20,230,20), 2);
    cv2.imshow("Result",img)
    cv2.waitKey(1)
 
 
cv2.imshow('img', img)
cv2.waitKey(0)

進(jìn)行網(wǎng)絡(luò)攝像頭的實(shí)時(shí)文字測(cè)試。

6.總結(jié)與評(píng)價(jià)

我是首次使用Tesseract,體驗(yàn)感很不好,這是我在b站的評(píng)論中看到的:

說實(shí)話,我還沒有學(xué)到用算法的地步,學(xué)學(xué)了解一下就好了,反正我是準(zhǔn)備項(xiàng)目實(shí)戰(zhàn)的中后期去學(xué)習(xí)深度學(xué)習(xí),以及其他的算法學(xué)習(xí),這方面我不好說,但它的精度的確是不達(dá)標(biāo),你們也看到了,居然把文字也識(shí)別成了數(shù)字。而且開啟攝像頭識(shí)別的也不是很好,識(shí)別不完全or識(shí)別錯(cuò)誤。

以上就是Python Opencv實(shí)戰(zhàn)之文字檢測(cè)OCR的詳細(xì)內(nèi)容,更多關(guān)于Python Opencv文字檢測(cè)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python字體反爬實(shí)戰(zhàn)案例分享

    Python字體反爬實(shí)戰(zhàn)案例分享

    這篇文章主要介紹了Python字體反爬實(shí)戰(zhàn)案例分享,文章基于python的相關(guān)資料利用實(shí)習(xí)?x站點(diǎn)實(shí)戰(zhàn)案例,具有一定的的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • python爬蟲設(shè)置每個(gè)代理ip的簡(jiǎn)單方法

    python爬蟲設(shè)置每個(gè)代理ip的簡(jiǎn)單方法

    在本篇文章里小編給大家整理了一篇關(guān)于python爬蟲設(shè)置每個(gè)代理ip的簡(jiǎn)單方法,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-08-08
  • Python數(shù)據(jù)結(jié)構(gòu)與算法中的隊(duì)列詳解(2)

    Python數(shù)據(jù)結(jié)構(gòu)與算法中的隊(duì)列詳解(2)

    這篇文章主要為大家詳細(xì)介紹了Python中的隊(duì)列,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • python通過pip更新所有已安裝的包實(shí)現(xiàn)方法

    python通過pip更新所有已安裝的包實(shí)現(xiàn)方法

    下面小編就為的帶來一篇python通過pip更新所有已安裝的包實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • python實(shí)現(xiàn)簡(jiǎn)易內(nèi)存監(jiān)控

    python實(shí)現(xiàn)簡(jiǎn)易內(nèi)存監(jiān)控

    這篇文章主要介紹了python實(shí)現(xiàn)簡(jiǎn)易內(nèi)存監(jiān)控,每隔3秒獲取系統(tǒng)內(nèi)存,當(dāng)內(nèi)存超過設(shè)定的警報(bào)值時(shí),獲取所有進(jìn)程占用內(nèi)存并發(fā)出警報(bào)聲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 基于Python制作IP查詢網(wǎng)站

    基于Python制作IP查詢網(wǎng)站

    這篇文章主要為大家詳細(xì)介紹了如何使用python快速做一個(gè)簡(jiǎn)易查內(nèi)網(wǎng)IP網(wǎng)站,通過電腦訪問網(wǎng)站就知道自己的IP地址,感興趣的小伙伴可以了解下
    2024-10-10
  • Python基礎(chǔ)中的的if-else語句詳解

    Python基礎(chǔ)中的的if-else語句詳解

    這篇文章主要為大家詳細(xì)介紹了Python基礎(chǔ)中的的if-else語句,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Python實(shí)現(xiàn)微信自動(dòng)鎖定工具

    Python實(shí)現(xiàn)微信自動(dòng)鎖定工具

    在數(shù)字化辦公時(shí)代,微信已成為職場(chǎng)溝通的重要工具,但臨時(shí)離開時(shí)忘記鎖屏可能導(dǎo)致敏感信息泄露,下面我們就來看看如何使用Python打造一個(gè)微信自動(dòng)鎖定工具吧
    2025-04-04
  • Python中的pathlib.Path為什么不繼承str詳解

    Python中的pathlib.Path為什么不繼承str詳解

    這篇文章主要給大家介紹了關(guān)于Python中pathlib.Path為什么不繼承str的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Python實(shí)現(xiàn)疫苗接種管理數(shù)據(jù)庫步驟詳解

    Python實(shí)現(xiàn)疫苗接種管理數(shù)據(jù)庫步驟詳解

    這篇文章主要為大家介紹了Python實(shí)現(xiàn)疫苗接種管理數(shù)據(jù)庫步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09

最新評(píng)論