色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

在Raspberry Pi上使用Tesseract進行光學字符識別的方法

科技觀察員 ? 來源:circuitdigest ? 作者:Aswinth Raj ? 2022-08-25 16:03 ? 次閱讀

機器使用相機觀察現實世界并解釋其中數據的能力將對其應用產生更大的影響。無論是像 Starship 機器人這樣的簡單送餐機器人,還是像特斯拉這樣的先進自動駕駛汽車,它們都依賴從高度復雜的攝像頭獲取的信息來做出決定。在本教程中,我們將學習如何通過閱讀圖像上的字符來識別圖像中的細節。這稱為光學字符識別(OCR)。

這為許多應用程序打開了大門,例如自動讀取名片中的信息、從名稱板上識別商店或識別道路上的標志板等等。我們中的一些人可能已經通過 Google Lens 體驗過這些功能,所以今天我們將使用來自Google Tesseract-OCR 引擎的光學字符識別 (OCR)工具以及 python 和 OpenCV 構建類似的東西,以使用Raspberry Pi識別圖片中的字符。

Raspberry pi 是一種便攜式且功耗更低的設備,用于許多實時圖像處理應用,如人臉檢測、 對象跟蹤、 家庭安全系統、監控攝像頭等。

先決條件

如前所述,我們將使用 OpenCV 庫來檢測和識別人臉。因此,在繼續本教程之前,請確保在 Raspberry Pi 上安裝 OpenCV 庫。還可以使用 2A 適配器為您的 Pi 供電,并將其連接到顯示監視器以便于調試。

本教程不會解釋OpenCV的工作原理,如果您有興趣學習圖像處理,請查看此OpenCV 基礎知識和高級圖像處理教程。您還可以在此使用 OpenCV 的圖像分割教程中了解輪廓、斑點檢測等。

樹莓派上安裝 Tesseract

要在 Raspberry Pi 上執行光學字符識別,我們必須在 Pi 上安裝 Tesseract OCR 引擎。為此,我們必須首先配置 Debian 軟件包 (dpkg),這將幫助我們安裝 Tesseract OCR。在終端窗口中使用以下命令來配置 Debian Package。

sudo dpkg - -configure -a

然后我們可以繼續使用 apt-get 選項安裝 Tesseract OCR (光學字符識別)。下面給出了相同的命令。

sudo apt-get install tesseract-ocr

您的終端窗口將如下所示,安裝完成大約需要 5-10 分鐘。

pYYBAGMHKuOATGiEAACgOirBrI8627.png

現在我們已經安裝了 Tesseract OCR,我們必須使用 pip install package 安裝 PyTesseract 包。Pytesseract 是圍繞 tesseract OCR 引擎的 python 包裝器,它幫助我們將 tesseract 與 python 一起使用。按照以下命令在 python 上安裝 pytesseract。

點安裝 pytesseract

在進行此步驟之前,請確保已經安裝了枕頭。學過樹莓派人臉識別教程的人應該已經安裝好了。其他人可以使用該教程并立即安裝。pytesseract 安裝完成后,您的窗口將如下所示

poYBAGMHKt-ASZZuAACQlEnZaTk990.png

Windows/Ubuntu 上的 Tesseract 4.0

Tesseract 光學字符識別項目最初由 Hewlett Packard 于 1980 年啟動,然后被 Google 采用,該項目一直保持至今。多年來,Tesseract 不斷發展,但它仍然只在受控環境中運行良好。如果圖像有太多的背景噪音或失焦,則 tesseract 似乎無法正常工作。

為了克服這個問題,最新版本的 tesseract Tesseract 4.0 使用深度學習模型來識別字符甚至筆跡。Tesseract 4.0 使用長短期記憶 (LSTM) 和循環神經網絡 (RNN) 來提高其 OCR 引擎的準確性。不幸的是,在本教程的這個時候,Tesseract 4.0 僅適用于 Windows 和 Ubuntu,但仍處于 Raspberry Pi 的 beta 階段。所以我們決定在 Windows 上試用 Tesseract 4.0,在 Raspberry Pi 上試用 Tesseract 3.04。

Pi上的簡單字符識別程序

因為我們已經在 PI 中安裝了Tesseract OCR和 Pytesseract 包。我們可以快速編寫一個小程序來檢查字符識別是如何處理測試圖像的。我使用的測試圖像、程序和結果可以在下圖中找到。

pYYBAGMHKtuARTBKAAAvuamRkRQ114.png

如您所見,該程序非常簡單,我們甚至沒有使用任何 OpenCV 包。上面的程序在下面給出

from PIL import Image

img =Image.open (‘1.png’)

text = pytesseract.image_to_string(img, config=‘’)

print (text)

在上面的程序中,我們試圖從位于程序同一目錄內的名為“1.png”的圖像中讀取文本。Pillow 包用于打開此圖像并將其保存在變量名img下。然后我們使用pytesseract 包中的image_to_sting方法檢測圖像中的任何文本,并將其保存為變量 text 中的字符串。最后我們打印文本的值來檢查結果。

如您所見,原始圖像實際上包含文本“解釋那些東西!01234567890 ”這是一個完美的測試圖像,因為我們在圖像中有字母、符號和數字。但是我們從 pi 得到的輸出是“解釋那些東西!Sdfosiefoewufv”這意味著 out 程序無法識別圖像中的任何數字。為了克服這個問題,人們通常使用 OpenCV 從程序中去除噪聲,然后根據圖像配置 Tesseract OCR 引擎以獲得更好的結果。但請記住,您不能期望 Tesseract OCR Python 提供 100% 可靠的輸出。

配置 Tesseract OCR 以改進結果

Pytesseract 允許我們通過設置更改圖像搜索字符方式的標志來配置 Tesseract OCR 引擎。配置 Tesseract OCR 時使用的三個主要標志是語言 (-l)、OCR 引擎模式 (--oem) 和頁面分段模式 (- -psm )。

除了默認的英語,Tesseract 還支持許多其他語言,包括印地語、土耳其語、法語等。我們在這里只使用英語,但您可以從官方github 頁面下載訓練數據并將其添加到您的包中以識別其他語言。 還可以從同一圖像中識別兩種或多種不同的語言。語言由標志 -l設置,要將其設置為一種語言,請使用代碼和標志,例如對于英語,它將是-l eng,其中 eng 是英語的代碼。

下一個標志是 OCR Engine Mode,它有四種不同的模式。每種模式都使用不同的算法來識別圖像中的字符。默認情況下,它使用隨包安裝的算法。但我們可以將其更改為使用 LSTM 或神經網絡。四種不同的引擎模式如下所示。該標志由--oem 指示,因此要將其設置為模式 1,只需使用--oem 1。

pYYBAGMHKtaAc8QPAAAg_Kl1xo4964.png

最后也是最重要的標志是頁面分割模式標志。當您的圖像具有如此多的背景細節以及字符或字符以不同的方向或大小書寫時,這些非常有用。共有 14 種不同的頁面分割模式,所有這些都在下面列出。該標志由–psm指示,因此設置模式為 11。它將是–psm 11。

poYBAGMHKtGAOq3CAAIHbUNwxYQ417.png

在 Tesseract Raspberry Pi 中使用 oem 和 psm 以獲得更好的結果

讓我們檢查一下這些配置模式的有效性。在下圖中,我嘗試識別限速板上的字符,上面寫著“ SPEED LIMIT 35 ”。如您所見,與其他字母相比,數字 35 的尺寸更大,這使 Tesseract 感到困惑,因此我們僅得到“SPEED LIMIT”的輸出,并且缺少數字。

poYBAGMHKs2ABJiDAAD9VouBzaY050.png

為了克服這個問題,我們可以設置配置標志。在上面的程序中,配置標志是空的 config=‘’,現在讓我們使用上面提供的詳細信息來設置它。圖像中的所有文本都是英文,所以語言標志是 -l eng,OCR 引擎可以保留為默認模式 3 所以 -oem 3。現在終于在 psm 模式下,我們需要從圖像中找到更多的字符,所以我們在這里使用模式 11,它變成了 –psm 11。最后的配置行看起來像

測試= pytesseract.image_to_string(灰色,配置=‘-l eng --oem 3 --psm 12’)

相同的結果可以在下面找到。正如您現在所看到的,Tesseract 能夠從圖像中找到所有字符,包括數字。

pYYBAGMHKsiAJyxiAAFUqHSH-M8059.png

通過置信水平提高準確性

Tesseract 中另一個有趣的特性是image_to_data方法。該方法可以為我們提供詳細信息,例如圖像中字符的位置、檢測的置信度、行和頁碼。讓我們嘗試在示例圖像上使用它

poYBAGMHKsSAP9poAAH8yBfkKlE177.png

在這個特定的例子中,我們得到了很多噪聲信息以及原始信息。圖片是一家名為“富通醫院”的醫院的名字牌。但是除了名稱之外,圖像還具有其他背景細節,例如徽標構建等。因此,Tesseract 嘗試將所有內容都轉換為文本,并給我們帶來了很多噪音,例如“$C”“|” “S_______S==+”等。

現在在這些情況下image_to_data方法就派上用場了。如您所見,上述光學字符識別算法返回其已識別的每個字符的置信度,Fortis 的置信度為 64,HOSPITAL 的置信度為 24。對于其他噪聲信息,置信度值為 10 或以下大于 10。這樣我們就可以過濾掉有用的信息,利用置信度的值來提高準確率。

樹莓派上的 OCR

雖然使用 Tesseract 時在 Pi 上的結果不是很令人滿意,但它可以與 OpenCV 結合以濾除圖像中的噪聲,如果圖像良好,可以使用其他配置技術獲得不錯的結果。我們已經在 Pi 上使用 tesseract 嘗試了大約 7 種不同的圖像,并且通過相應地調整每張圖片的模式來獲得接近的結果。完整的項目文件可以下載為該位置的 Zip,其中包含所有測試圖像和基本代碼。

讓我們在 Raspberry Pi 上再嘗試一個示例板標志,這一次非常簡單明了。下面給出了相同的代碼

從 PIL 導入 pytesseract 導入圖像

導入cv2

img = cv2.imread(‘4.png’,cv2.IMREAD_COLOR) #打開要識別字符的圖像

#img = cv2.resize(img, (620,480) ) #如果需要,調整圖像大小

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #轉換為灰色以減少

細節 gray = cv2.bilateralFilter(gray, 11, 17, 17) #模糊以減少噪點

original = pytesseract.image_to_string(gray, config=‘’)

#test = (pytesseract.image_to_data(gray, lang=None, config=‘’, nice=0) ) #get confidence level if required

#print(pytesseract.image_to_boxes(灰色的))

打印(原件)

該程序打開我們需要從中識別字符的文件,然后將其轉換為灰度。這將減少圖像中的細節,使 Tesseract 更容易識別字符。為了進一步減少背景噪聲,我們使用 OpenCV 中的一種雙邊濾波器對圖像進行模糊處理。最后,我們開始從圖像中識別字符并將其打印在屏幕上。最終的結果將是這樣的。

pYYBAGMHKr6AGavIAAQLcAbCxbM861.png

希望您理解本教程并喜歡學習新知識。OCR 用于許多地方,如自動駕駛汽車、車牌識別、路牌識別導航等,在 Raspberry Pi 上使用它為更多可能性打開了大門,因為它可以便攜且緊湊。

導入 pytesseract

從 PIL 導入圖像

導入簡歷2





img = cv2.imread('4.png',cv2.IMREAD_COLOR) #打開要識別字符的圖像

#img = cv2.resize(img, (620,480) ) #如果需要調整圖像大小



gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #轉換為灰色以減少細節

gray = cv2.bilateralFilter(gray, 11, 17, 17) #Blur 去噪



原始= pytesseract.image_to_string(灰色,配置='')

#test = (pytesseract.image_to_data(gray, lang=None, config='', nice=0) ) #get confidence level if required

#print(pytesseract.image_to_boxes(灰色))



打印(原件)



'''必需 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

最終 = ''



對于原始的 c:

對于需要的ch:

如果 c==ch:

最終 = 最終 + c

休息



打印(測試)



在測試中:

如果 a == "\n":

打印(“找到”)'''

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 字符識別
    +關注

    關注

    0

    文章

    17

    瀏覽量

    8682
  • OCR
    OCR
    +關注

    關注

    0

    文章

    146

    瀏覽量

    16423
收藏 人收藏

    評論

    相關推薦

    求DSP字符識別源程序

    有沒有哪位大神有DSP車牌字符識別的源程序,跪求分享,謝謝
    發表于 05-15 17:20

    運用Labview如何進行圖像采集與字符識別

    運用Labview如何進行圖像采集與字符識別
    發表于 04-27 16:06

    OCR光學字符識別技術與市場完美的融合到了一起

    移動端車牌識別,OCR光學字符識別技術
    發表于 06-04 15:55

    有沒有專門針對光學字符識別的功能包?

    有沒有專門針對“光學字符識別”的功能包?我有一個套件STM32H747I-Disco,打算做一些字符識別方面的項目。
    發表于 12-07 12:11

    模式識別中三種字符識別的方法

    本文總結出三種字符識別的方法基于模板匹配的字符識別法、完全基于字符的結構特點和筆畫類型的識別法以及利用神經網絡的
    發表于 10-09 16:15 ?0次下載

    兩級分類實現車牌字符識別

    車牌識別系統LPR(License Plate Recognition)包括車牌定位、字符分割和字符識別三大部分。其中,字符識別的準確及高效成為整個車牌
    發表于 11-30 11:31 ?1次下載
    兩級分類實現車牌<b class='flag-5'>字符識別</b>

    基于卷積神經網絡CNN的車牌字符識別方法

    車牌字符識別是智能車牌識別系統中的重要組成部分。針對車牌字符類別多、背景復雜影響正確識別率的問題,提出了一種基于卷積神經網絡(CNN)的車牌字符識別
    發表于 11-30 14:24 ?21次下載
    基于卷積神經網絡CNN的車牌<b class='flag-5'>字符識別方法</b>

    光學字符識別讀表系統設計

    ,基于此需求進行系統研制,通過圖像處理和字符識別的應用來實現管理系統的統一化、標準化、實時性。 圖像識別的主要目的是利用計算機自動處理圖片信息,用來取代人工去對圖像進行分類和
    發表于 02-28 11:15 ?1次下載
    <b class='flag-5'>光學</b><b class='flag-5'>字符識別</b>讀表系統設計

    采用機器視覺軟件的高速光學字符識別系統

    該視頻演示比較了利用Zynq-7000 All Programmable SoC和MVTec的HALCON機器視覺軟件執行實時硅器件代碼識別的兩個高速光學字符識別(OCR)系統。
    的頭像 發表于 11-23 06:44 ?2341次閱讀

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

     OCR (光學字符識別)是指電子設備(例如掃描儀或數碼相機)檢查紙上打印的字符,通過檢測暗、亮的模式確定其形狀,然后用字符識別方法將形狀翻譯成計算機文字的過程;即,針對印刷體
    的頭像 發表于 03-02 13:49 ?2.1w次閱讀

    使用低成本實現光學字符識別讀表系統的研究說明

    為了實現低成本的光學識別以及對識別數據的云傳輸和儲存,基于Raspberry Pi建立了通過光學字符識別
    發表于 10-28 11:57 ?3次下載
    使用低成本實現<b class='flag-5'>光學</b><b class='flag-5'>字符識別</b>讀表系統的研究說明

    了解光學字符識別技術識別票據原理

    ,翻譯內容略作修改。 光學字符識別技術(OCR)目前被廣泛利用在手寫識別、打印識別及文本圖像識別等相關領域。小到文檔
    的頭像 發表于 11-27 10:28 ?2516次閱讀

    機器視覺運動控制一體機應用例程|OCR字符識別應用

    應用背景 OCR字符識別的應用場景非常廣泛,例如在生產型企業領域中,OCR具有多樣性的應用,比如讀取儀表儀器的文本,進行實時監控、讀取產品的生產日期、批號,以此來獲得產品的信息和可
    的頭像 發表于 02-24 17:27 ?1464次閱讀
    機器視覺運動控制一體機應用例程|OCR<b class='flag-5'>字符識別</b>應用

    Raspberry Pi安裝Android的方法

    Raspberry Pi 中使用的流行操作系統是 Raspbian,它是一個基于 linux 的 Raspberry Pi 官方操作系統,我們使用它構建了許多
    的頭像 發表于 09-05 15:10 ?1.9w次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b><b class='flag-5'>上</b>安裝Android的<b class='flag-5'>方法</b>

    Raspberry Pi和Arduino的手寫數字識別

    電子發燒友網站提供《Raspberry Pi和Arduino的手寫數字識別.zip》資料免費下載
    發表于 10-19 09:23 ?0次下載
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>和Arduino<b class='flag-5'>上</b>的手寫數字<b class='flag-5'>識別</b>
    主站蜘蛛池模板: 99国产在线视频 | 网红刘婷hd国产高清 | 色偷偷男人天堂 | 夫妻性姿势真人做视频 | 中国少妇内射XXXX狠干 | 99免费在线 | 俄罗斯少女人体 | 久久精品午夜一区二区福利 | 国产AV精品久久久免费看 | 欧美阿v天堂视频在99线 | 看电影就来5566先锋av | 69久久国产精品热88人妻 | 免费看男人J放进女人J无遮掩 | 色婷婷AV99XX | 最新亚洲中文字幕在线观看 | 色哟哟网站入口在线观看视频 | 最近中文字幕高清中文 | 看美女大腿中间的部分 | 久久久高清国产999尤物 | 能看的黄页最新网站 | 亚洲一区精品伊人久久伊人 | bbwvideoa欧美老妇 | 最新色导航 | 久久日本片精品AAAAA国产 | 成人免费视频在线看 | 97人人爽人人爽人人人片AV | GOGOGO高清在线播放免费 | 美女厕所撒尿ass | 国产欧美日韩网站 | 欧美在线看费视频在线 | 美女扒开腿让男人桶个爽 | 亚洲精品一线二线三线无人区 | 精品国产精品人妻久久无码五月天 | 亚洲国产区中文在线观看 | 午夜免费福利 | 日本亚洲精品无码区国产电影 | 色姣姣狠狠撩综合网 | 别停好爽好深好大好舒服视频 | 香蕉精品国产自在现线拍 | 蜜臀AV久久国产午夜福利软件 | 超碰97人人做人人爱网站 |