RM新时代网站-首页

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

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

關(guān)于兩個Python開源識別工具的效果

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-10-17 11:36 ? 次閱讀

OCR 是光學(xué)字符識別(英語:Optical Character Recognition,OCR)是指對文本資料的圖像文件進(jìn)行分析識別處理,獲取文字及版面信息的過程。

很早之前就有同學(xué)在公眾號后臺回復(fù)希望出一篇 OCR 相關(guān)的文章,今天嘗試了一下 cnocr 和 tesseract 兩個 Python 開源識別工具的效果,給大家分別講講兩個工具的使用方法和對比效果。

1.準(zhǔn)備

開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上,如果沒有,可以訪問這篇文章:超詳細(xì)Python安裝指南 進(jìn)行安裝。

(可選1) 如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda:Python數(shù)據(jù)分析與挖掘好幫手—Anaconda,它內(nèi)置了Python和pip.

(可選2) 此外,推薦大家用VSCode編輯器,它有許多的優(yōu)點(diǎn):Python 編程的最好搭檔—VSCode 詳細(xì)指南

請選擇以下任一種方式輸入命令安裝依賴

  1. Windows 環(huán)境 打開 Cmd (開始-運(yùn)行-CMD)。
  2. MacOS 環(huán)境 打開 Terminal (command+空格輸入Terminal)。
  3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.

(選擇一)安裝 cnocr:

pip install cnocr

看到 Successfully installed xxx 則說明安裝成功。

如果你只想對圖片中的中文進(jìn)行識別,那么 cnocr 是一個不錯的選擇,你只需要安裝 cnocr 包即可。

但如果你想試試其他語言的OCR識別,Tesseract 是更好的選擇。

(選擇二)安裝 pytesseract:

首先,無論是Windows還是macOS,你都需要安裝 pytesseract:

pip install pytesseract

其次,還需要安裝Tesseract.

(macOS) Tesseract 在macOS下可以使用brew安裝:

brew install tesseract

非常方便,一條命令即可完成安裝。

(Windows )**** 安裝Tesseract

需要先下載安裝tesseract的程序,然后下載中文簡體字預(yù)訓(xùn)練好的模型包(盡管本教程不會用tesseract,但還是給大家提供了)。

你可以在Python實用寶典公眾號后臺回復(fù):**tesseract **打包下載。

下載完成后,將 tesseract-ocr-setup-4.00.00dev.exe 安裝到 Tesseract-OCR 指定目錄下,復(fù)制該目錄路徑增加到Path中:

圖片

并將訓(xùn)練好的模型文件 chi_sim.traineddata 放入該目錄中,這樣安裝就完成了。

2.cnocr 識別圖片的中文

cnocr 主要針對的是排版簡單的印刷體文字圖片,如截圖圖片,掃描件等。目前內(nèi)置的文字檢測和分行模塊無法處理復(fù)雜的文字排版定位。

盡管它分別提供了單行識別函數(shù)和多行識別函數(shù),但在本人實測下,單行識別函數(shù)的效果非常糟糕,或者說要求的條件十分苛刻,基本上連截圖的文字都識別不出來。

不過多行識別函數(shù)還不錯,使用該函數(shù)識別的代碼如下:

from cnocr import CnOcr
ocr = CnOcr()
res = ocr.ocr('test.png')
print("Predicted Chars:", res)

用于識別這個圖片里的文字:

圖片

效果如下:

圖片

如果不是很吹毛求疵,這樣的效果已經(jīng)很不錯了。

3.pytesseract 識別圖片的英文

如果你的OCR目的不是中文而是英文,是需要別的模型的。這里給大家分享Tesseract-OCR,它是一款由HP實驗室開發(fā),由Google維護(hù)的開源OCR引擎。

Tesseract-OCR 可擴(kuò)展性很強(qiáng),你可以基于它訓(xùn)練屬于自己的OCR模型。

現(xiàn)在給大家看看它分類英文的效果,代碼如下:

import pytesseract
from PIL import Image

image = Image.open('test.png')
code = pytesseract.image_to_string(image, lang='eng')
print(code)

識別的圖片:

圖片

效果如下:

圖片

Tesseract 識別英文的效果真的很不錯,中文效果就比較一般了。

如果你想試試Tesseract識別中文,只需要將代碼中的eng改為chi_sim即可,不過相信我,效果不忍直視。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3785

    瀏覽量

    81002
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3309

    瀏覽量

    42471
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4792

    瀏覽量

    84627
  • OCR
    OCR
    +關(guān)注

    關(guān)注

    0

    文章

    144

    瀏覽量

    16348
收藏 人收藏

    評論

    相關(guān)推薦

    求助,關(guān)于FX3的兩個使用問題求解

    如題,咨詢FX3的兩個使用問題: 1,在F1F模式下,燒寫成功后,WIN10無法識別設(shè)備,切換到0F1,燒寫成功后,WIN10同樣無法識別設(shè)備,所以現(xiàn)在我的板子只能使用USB引導(dǎo)了,燒寫到RAM可以
    發(fā)表于 02-22 07:16

    python開發(fā)工具推薦

    Python開發(fā)軟件可根據(jù)其用途不同分為種,一種是Python代碼編輯器,一種是Python集成開發(fā)工具,
    發(fā)表于 04-12 16:12

    關(guān)于汽車在點(diǎn)頭與沉浮兩個自由度方向的問題

    關(guān)于汽車在點(diǎn)頭與沉浮兩個自由度方向的問題,利用simulink進(jìn)行求解。
    發(fā)表于 02-16 17:18 ?0次下載

    Python兩個基礎(chǔ)包numpy和Matplotlib示例詳解

    Python的科學(xué)計算包 - Numpy numpy(Numerical Python extensions)是一第三方的Python包,用于科學(xué)計算。這個庫的前身是1995年就開始
    發(fā)表于 11-15 18:36 ?5491次閱讀

    精選10Python開源項目

    過去一月里,我們對近 250 Python 開源項目進(jìn)行了排名,并挑選出熱度前 10 的項目。
    的頭像 發(fā)表于 11-12 09:47 ?6321次閱讀

    語音識別兩個方法_語音識別的應(yīng)用有哪些

    本文主要闡述了語音識別兩個方法及語音識別的應(yīng)用。
    發(fā)表于 04-01 09:04 ?5991次閱讀

    干貨:兩個關(guān)于Vim的使用問題及小技巧

    最近在使用 VIM 時遇到兩個新的問題,覺得還很挺有價值的?,F(xiàn)在將處理方法總結(jié)后,分享給大家。
    的頭像 發(fā)表于 08-31 12:09 ?2924次閱讀
    干貨:<b class='flag-5'>兩個</b><b class='flag-5'>關(guān)于</b>Vim的使用問題及小技巧

    Python中用于終止線程的兩個選項

    ? 我經(jīng)常被問到如何殺死一后臺線程,這個問題的答案讓很多人不開心: 線程是殺不死的。在本文中,我將向您展示? Python ?中用于終止線程的兩個選項。 如果我們是一好奇寶寶的話,
    的頭像 發(fā)表于 11-17 10:02 ?4666次閱讀

    兩個電機(jī)的電路開源

    電子發(fā)燒友網(wǎng)站提供《兩個電機(jī)的電路開源.zip》資料免費(fèi)下載
    發(fā)表于 08-03 11:20 ?1次下載
    <b class='flag-5'>兩個</b>電機(jī)的電路<b class='flag-5'>開源</b>

    兩個LED和兩個按鈕的使用

    電子發(fā)燒友網(wǎng)站提供《兩個LED和兩個按鈕的使用.zip》資料免費(fèi)下載
    發(fā)表于 01-30 16:04 ?1次下載
    <b class='flag-5'>兩個</b>LED和<b class='flag-5'>兩個</b>按鈕的使用

    網(wǎng)絡(luò)工程師學(xué)Python-開源自動化部署工具Fabric

    Python Fabric是一基于Python開源自動化部署工具,可以簡化管理遠(yuǎn)程服務(wù)器的過程。
    的頭像 發(fā)表于 04-28 09:54 ?746次閱讀

    關(guān)于Python 加速工具的選單

    一些高效的函數(shù)實現(xiàn),也有已經(jīng)封裝好的拓展模塊,還包括速度更快的 Python 解釋器。 當(dāng)然 多處理器版本 確實能大幅提高運(yùn)行效率。如果想了解多核編程,可以從 multiprocessing 模塊 開始。而且也能找到非常多的關(guān)于分布式計算的第三方
    的頭像 發(fā)表于 07-07 11:19 ?374次閱讀

    OCR如何自動識別圖片文字

    回復(fù)希望出一篇 OCR 相關(guān)的文章,今天嘗試了一下 cnocr 和 tesseract 兩個 Python 開源識別工具
    的頭像 發(fā)表于 10-31 16:45 ?773次閱讀
    OCR如何自動<b class='flag-5'>識別</b>圖片文字

    python中如何交換兩個數(shù)的位置

    Python中,我們可以使用多種方法來交換兩個數(shù)的位置。下面將詳細(xì)介紹這些方法,并提供示例代碼和解釋。 方法一:使用臨時變量進(jìn)行交換 這是最簡單的方法之一,我們可以使用一臨時變量來交換兩個
    的頭像 發(fā)表于 11-22 10:56 ?2933次閱讀

    python中如何交換兩個數(shù)的值相加

    應(yīng)用進(jìn)行詳細(xì)解析。 一、變量交換原理解析 傳統(tǒng)方式 在Python中,交換兩個數(shù)的值通??梢允褂靡?b class='flag-5'>個臨時變量進(jìn)行操作。假設(shè)有變量a和b,要實現(xiàn)交換,可以通過如下代碼實現(xiàn): temp = a a = b b = temp 這種方法
    的頭像 發(fā)表于 11-29 17:29 ?657次閱讀
    RM新时代网站-首页