国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

OCR--基于Tesseract詳細(xì)教程(python)

這篇具有很好參考價(jià)值的文章主要介紹了OCR--基于Tesseract詳細(xì)教程(python)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

1.介紹

2. 準(zhǔn)備工作

2.1 安裝Tesseract

2.2 安裝pytesseract

3.?Tesseract的基礎(chǔ)應(yīng)用

?3.1 翻譯圖像文字——image_to_string

?3.2 獲取單個字符的外框——image_to_boxes

?3.3? 輸出區(qū)域、置信度 文字內(nèi)容以及其他——image_to_data

3.4 設(shè)定配置實(shí)現(xiàn)過濾功能?

3.4.1? OEM

3.4.2? PEM

3.4.3 示例:只檢測數(shù)字


1.介紹

????????Tesseract 的開發(fā)始于 2006 年,由惠普公司的 Mike J. Bradbury 帶領(lǐng)團(tuán)隊(duì)進(jìn)行。當(dāng)時(shí),他們希望開發(fā)一款能夠識別印刷體和手寫體的 OCR(Optical Character Recognition,光學(xué)字符識別) 引擎。2009 年,Tesseract 被移植到 C++,并成為 Google 的開源項(xiàng)目。隨著時(shí)間的推移,Tesseract 逐漸成為最受歡迎的 OCR 引擎之一,被廣泛應(yīng)用于各種場景。它可以將圖像中的文字提取出來,并將其轉(zhuǎn)化為機(jī)器可讀的文本。Tesseract 不僅支持多種語言,還可以進(jìn)行多種格式的圖像處理,包括常見的 PDF、JPG、PNG 等。

2. 準(zhǔn)備工作

2.1 安裝Tesseract

Tesseract下載地址為:
Tesseract User Manual | tessdocTesseract documentationhttps://tesseract-ocr.github.io/tessdoc/

↓↓↓??按照如下步驟進(jìn)行安裝?

tesseract-ocr,opencv項(xiàng)目實(shí)戰(zhàn),ocr,opencv,python,圖像處理

tesseract-ocr,opencv項(xiàng)目實(shí)戰(zhàn),ocr,opencv,python,圖像處理

?tesseract-ocr,opencv項(xiàng)目實(shí)戰(zhàn),ocr,opencv,python,圖像處理

勾選下面的選項(xiàng)下載一些語言包,可以翻譯中文和一些其他語言?

tesseract-ocr,opencv項(xiàng)目實(shí)戰(zhàn),ocr,opencv,python,圖像處理

下載不成功的朋友可以點(diǎn)擊下面的鏈接進(jìn)行下載

https://github.com/tesseract-ocr/tessdatahttps://github.com/tesseract-ocr/tessdatatesseract-ocr,opencv項(xiàng)目實(shí)戰(zhàn),ocr,opencv,python,圖像處理

選擇下載路徑?

tesseract-ocr,opencv項(xiàng)目實(shí)戰(zhàn),ocr,opencv,python,圖像處理

tesseract-ocr,opencv項(xiàng)目實(shí)戰(zhàn),ocr,opencv,python,圖像處理

點(diǎn)擊Finish下載完畢?

tesseract-ocr,opencv項(xiàng)目實(shí)戰(zhàn),ocr,opencv,python,圖像處理

2.2 安裝pytesseract

執(zhí)行命令安裝pytesseract庫

pip install pytesseract

3.?Tesseract的基礎(chǔ)應(yīng)用

如果你想先了解一下pytesseract都有什么功能的話可以先Ctrl + 鼠標(biāo)左鍵 點(diǎn)進(jìn)去大致瀏覽一下

這里Franpper幫大家把pytesseract的功能先列出來

tesseract-ocr,opencv項(xiàng)目實(shí)戰(zhàn),ocr,opencv,python,圖像處理

下面正式開始

首先進(jìn)行一些基礎(chǔ)操作:導(dǎo)入相關(guān)包、設(shè)置 Tesseract OCR 引擎的路徑、加載圖片等

# 導(dǎo)入一些需要的包
import cv2
import pytesseract

# 設(shè)置Tesseract OCR引擎路徑
pytesseract.pytesseract.tesseract_cmd = r'D:\Program Files\Tesseract-OCR\tesseract.exe'

# 加載一張圖片
img = cv2.imread(r'E:\csdn\tesseract\Snipaste.jpg')

?下面是Franpper讀入的圖片(就是本文的簡介)tesseract-ocr,opencv項(xiàng)目實(shí)戰(zhàn),ocr,opencv,python,圖像處理

?3.1 翻譯圖像文字——image_to_string

text = pytesseract.image_to_string(img, lang="chi_sim") # 指定語言

print(text)

輸出如下(其實(shí)看結(jié)果翻譯的情況并不好):

tesseract-ocr,opencv項(xiàng)目實(shí)戰(zhàn),ocr,opencv,python,圖像處理

?3.2 獲取單個字符的外框——image_to_boxes

boxes = pytesseract.image_to_boxes(img, lang="chi_sim")  # 使用
image_h, image_w, _ = img.shape


def cv2ImgAddText(img, text, left, top, textColor=(0, 255, 0), textSize=20):
    """

    :param img: 圖像
    :param text: 文字內(nèi)容
    :param left: 字體左邊開始位置
    :param top: 字體上面開始位置
    :param textColor: 字體顏色
    :param textSize: 字體大小
    :return: 繪制后的圖片
    """

    import numpy as np
    from PIL import Image, ImageDraw, ImageFont
    if isinstance(img, np.ndarray):  # 判斷是否OpenCV圖片類型
        img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
    # 創(chuàng)建一個可以在給定圖像上繪圖的對象
    draw = ImageDraw.Draw(img)
    # 字體的格式
    fontStyle = ImageFont.truetype(
        "STSONG.TTF", textSize, encoding="utf-8")
    # 繪制文本
    draw.text((left, top), text, textColor, font=fontStyle)
    # 轉(zhuǎn)換回OpenCV格式
    return cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)


for box in boxes.splitlines():
    box = box.split(' ')
    print(box)
    """
    opencv中坐標(biāo)系是基于左上點(diǎn)的
    但是tesseract檢測出的框是基于左下點(diǎn)的
    輸出的數(shù)據(jù)分別是:字符, 左下角橫坐標(biāo), 左下角縱坐標(biāo), 右上角橫坐標(biāo), 右上角縱坐標(biāo)(均是基于左下點(diǎn)原點(diǎn))
    所以在繪制的時(shí)候要進(jìn)行坐標(biāo)轉(zhuǎn)換
    """
    x1, y1, x2, y2 = int(box[1]), int(box[2]), int(box[3]), int(box[4])

    cv2.rectangle(img, (x1, image_h - y1), (x2, image_h - y2), (0, 255, 0), 1)
    # cv2.putText函數(shù)無法添加中文字符,所以使用PIL庫(RGB)添加中文字符后轉(zhuǎn)為opencv格式(BGR)
    img = cv2ImgAddText(img, box[0], x1, image_h - y1 - 30, (255, 0, 0), 15)

cv2.imshow("img", img)
cv2.waitKey(0)

輸出如下,可以獲取單個文字外框的左下角橫坐標(biāo)、左下角縱坐標(biāo)、右上角橫坐標(biāo)、右上角縱坐標(biāo)(基于左下點(diǎn)原點(diǎn)坐標(biāo)系)

tesseract-ocr,opencv項(xiàng)目實(shí)戰(zhàn),ocr,opencv,python,圖像處理

?3.3? 輸出區(qū)域、置信度 文字內(nèi)容以及其他——image_to_data

data = pytesseract.image_to_data(img, output_type=pytesseract.Output.STRING, lang="chi_sim")

for level, infor in enumerate(data.splitlines()):
    if level != 0:
        infor = infor.split()
        # 每一行的輸出為:level、page_num、block_num、par_num、line_num、word_num、left、top、width、height、conf、text
        print(infor)
        if len(infor) == 12:
            x, y, w, h = int(infor[6]), int(infor[7]), int(infor[8]), int(infor[9])  # 這里的坐標(biāo)郵與opencv相同了,即左上加寬高
            cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 1)
            img = cv2ImgAddText(img, infor[11], x, y - 20, (255, 0, 0), 15)

cv2.imshow("img", img)
cv2.waitKey(0)

執(zhí)行結(jié)果如下:可以看到把一些字母合并成單詞整體進(jìn)行輸出了?

tesseract-ocr,opencv項(xiàng)目實(shí)戰(zhàn),ocr,opencv,python,圖像處理

3.4 設(shè)定配置實(shí)現(xiàn)過濾功能?

在編輯配置時(shí)有兩個重要的參數(shù),分別是OEM與PSM,下面Franpper給大家介紹一下

3.4.1? OEM

即 OCR?Engine Mode(引擎模式),共有四種,如下圖:

tesseract-ocr,opencv項(xiàng)目實(shí)戰(zhàn),ocr,opencv,python,圖像處理

  • 0 — Legacy engine only
  • 1 — Neural nets LSTM engine only
  • 2 — Legacy + LSTM engines
  • 3 — Default, based on what is available
3.4.2? PEM

即Page Segmentation Mode(圖片分割模式),共有13種, 如下圖:

tesseract-ocr,opencv項(xiàng)目實(shí)戰(zhàn),ocr,opencv,python,圖像處理

  • 0 — Orientation and script detection (OSD) only. 方向及語言檢測(Orientation and script detection,OSD)
  • 1 — Automatic page segmentation with OSD. 自動圖片分割
  • 2 — Automatic page segmentation, but no OSD, or OCR. 自動圖片分割,沒有OSD和OCR
  • 3 — Fully automatic page segmentation, but no OSD. (Default) 完全的自動圖片分割,沒有OSD
  • 4 — Assume a single column of text of variable sizes. 假設(shè)有一列不同大小的文本
  • 5 — Assume a single uniform block of vertically aligned text. 假設(shè)有一個垂直對齊的文本塊
  • 6 — Assume a single uniform block of text. 假設(shè)有一個對齊的文本塊
  • 7 — Treat the image as a single text line. 圖片為單行文本
  • 8 — Treat the image as a single word. 圖片為單詞
  • 9 — Treat the image as a single word in a circle. 圖片為圓形的單詞
  • 10 — Treat the image as a single character. 圖片為單個字符
  • 11 — Sparse text. Find as much text as possible in no particular order. 稀疏文本。查找盡可能多的文本,沒有特定的順序
  • 12 — Sparse text with OSD. OSD稀疏文本
  • 13 — Raw line. Treat the image as a single text line, bypassing hacks that are Tesseract-specific. 原始行。將圖像視為單個文本行
3.4.3 示例:只檢測數(shù)字
config = r'--oem 3 --psm 6 outputbase digits'  # 添加配置
data = pytesseract.image_to_data(img, output_type=pytesseract.Output.STRING, lang="chi_sim", config=config)

for level, infor in enumerate(data.splitlines()):
    if level != 0:
        infor = infor.split()
        # 每一行的輸出為:level、page_num、block_num、par_num、line_num、word_num、left、top、width、height、conf、text
        print(infor)
        if len(infor) == 12:
            x, y, w, h = int(infor[6]), int(infor[7]), int(infor[8]), int(infor[9])  # 這里的坐標(biāo)郵與opencv相同了,即左上加寬高
            cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 1)
            img = cv2ImgAddText(img, infor[11], x, y - 20, (255, 0, 0), 15)

cv2.imshow("img", img)
cv2.waitKey(0)

運(yùn)行結(jié)果如下,可以看到只有數(shù)字被提取了出來

tesseract-ocr,opencv項(xiàng)目實(shí)戰(zhàn),ocr,opencv,python,圖像處理

?

4. 結(jié)語

????????Tesseract不僅僅是一個OCR工具,它代表了人工智能和機(jī)器學(xué)習(xí)在文本識別領(lǐng)域的突破性技術(shù)。它不僅為我們提供了從圖像中提取文字的強(qiáng)大能力,而且通過持續(xù)的研發(fā)和優(yōu)化,Tesseract的能力還將進(jìn)一步提升。然而,Tesseract并非萬能的。雖然它對于一些常規(guī)的文本識別任務(wù)有著出色的表現(xiàn),但在處理一些復(fù)雜或特定的任務(wù)時(shí),我們可能還需要進(jìn)行更多的預(yù)處理或者后處理工作。盡管如此,Tesseract仍然是一個非常強(qiáng)大且靈活的工具,值得我們深入學(xué)習(xí)和探索。文章來源地址http://www.zghlxwxcb.cn/news/detail-859488.html

到了這里,關(guān)于OCR--基于Tesseract詳細(xì)教程(python)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Python OCR庫比較:pyocr、pytesseract和python-tesseract

    在接口自動化工作中,經(jīng)常需要處理文字識別的任務(wù),而OCR(Optical Character Recognition,光學(xué)字符識別)庫能夠幫助我們將圖像中的文字提取出來。Python中有幾個常用的OCR庫,包括pyocr、pytesseract和python-tesseract。本文將對它們進(jìn)行比較,并提供一些示例代碼來演示它們在實(shí)際接口

    2024年02月07日
    瀏覽(21)
  • 基于Tesseract模塊Python實(shí)現(xiàn)提取圖片中的文字信息(安裝+使用教程)

    基于Tesseract模塊Python實(shí)現(xiàn)提取圖片中的文字信息(安裝+使用教程)

    Python實(shí)現(xiàn)提取圖片中的文字可以使用Optical Character Recognition (OCR) 技術(shù)來解決。OCR是指將圖像中的文本轉(zhuǎn)換成可編輯的文本的過程。Python有許多OCR庫,但最流行和最廣泛使用的是Tesseract庫。 下面是一個使用Python和Tesseract來提取圖像中的文本的簡單示例代碼。 OCR,即光學(xué)字符識

    2024年02月05日
    瀏覽(19)
  • OCR之Tesseract安裝

    OCR之Tesseract安裝

    Tesseract是常用的開源OCR識別引擎,后續(xù)的圖片文字識別項(xiàng)目我們將會調(diào)用該庫進(jìn)行識別,本文針對Tesseract的安裝配置進(jìn)行相關(guān)說明。 下載地址:Tesseract 選擇最新的版本進(jìn)行下載,下載完成后,解壓安裝在自己設(shè)定的安裝路徑,一直選擇next即可完成安裝。 打開系統(tǒng)屬性頁面,

    2024年02月14日
    瀏覽(20)
  • Tesseract OCR安裝與簡單使用

    Tesseract OCR安裝與簡單使用

    1.下載Tesseract OCR 下載地址:https://digi.bib.uni-mannheim.de/tesseract/ 2.安裝Tesseract OCR 雙擊安裝程序,進(jìn)入安裝界面。 接受協(xié)議,下一步。 選擇用戶 選擇組件 如果電腦配置夠好、網(wǎng)速夠快,可以之間勾選”Additional language data(download)“,下載全部額外的語言數(shù)據(jù)。 直接全選的話,后

    2024年02月12日
    瀏覽(34)
  • Mac 上使用 Tesseract OCR 識別圖片文本

    Tesseract OCR 引擎:Tesseract是一個開源的OCR引擎,你需要先安裝它??梢詮腡esseract官方網(wǎng)站(https://github.com/tesseract-ocr/tesseract)下載適用于你的操作系統(tǒng)的安裝程序或源代碼,并按照官方文檔進(jìn)行安裝。 Tesseract OCR 對于低分辨率或模糊的圖片可能無法準(zhǔn)確識別。嘗試使用更高分

    2024年02月15日
    瀏覽(20)
  • Android開發(fā):通過Tesseract第三方庫實(shí)現(xiàn)OCR

    Android開發(fā):通過Tesseract第三方庫實(shí)現(xiàn)OCR

    一、引言 ????????什么是 OCR ?OCR(Optical Character Recognition,光學(xué)字符識別)是指電子設(shè)備(例如掃描儀或數(shù)碼相機(jī))檢查紙上打印的字符,通過檢測暗、亮的模式確定其形狀,然后用字符識別方法將形狀翻譯成計(jì)算機(jī)文字的過程。簡單地說,OCR是一種技術(shù),該項(xiàng)技術(shù)采用光學(xué)的

    2024年02月16日
    瀏覽(159)
  • 提取圖像中的文本信息(Tesseract OCR 和 pytesseract)

    提取圖像中的文本信息(Tesseract OCR 和 pytesseract)

    安裝Tesseract:點(diǎn)這里參考本人博客 這個庫只自帶了一個英語的語言包,這個時(shí)候如果我們圖片中有對中文或者其他語言的識別需求,就需要去下載其他語言包 進(jìn)入官網(wǎng)以后進(jìn)入Traineddata Files 找到這個位置 tessdata_best適用于愿意以大量速度換取稍微好一點(diǎn)的準(zhǔn)確性的人。它也是

    2024年02月12日
    瀏覽(94)
  • Qt利用VCPKG和CMake和OpenCV和Tesseract實(shí)現(xiàn)中英文OCR

    Qt利用VCPKG和CMake和OpenCV和Tesseract實(shí)現(xiàn)中英文OCR

    ??今天看 OpenCV 方面的教程,pdf 格式的,因?yàn)橐恍?qiáng)迫癥的習(xí)慣,喜歡添加一些書簽,手動是不太愿意的,自然就想到利用OCR來實(shí)現(xiàn)。 ??想要自己編碼實(shí)現(xiàn)OCR,方案比較簡單就是 Tesseract 。單獨(dú)使用 Tesseract 也可以,但最好利用 OpenCV 來進(jìn)行圖像方面的處理,一大堆方法可

    2024年02月05日
    瀏覽(91)
  • 從零開發(fā)短視頻電商 Tesseract OCR 的 Java 拓展庫 javacpp-presets

    從零開發(fā)短視頻電商 Tesseract OCR 的 Java 拓展庫 javacpp-presets

    項(xiàng)目地址:https://github.com/bytedeco/javacpp-presets JavaCPP: JavaCPP 是一個用于在 Java 中使用本地庫的工具,它允許通過 Java 代碼訪問本地(C/C++)庫,而無需編寫過多的本地代碼。這種方法可以使 Java 與其他語言編寫的庫進(jìn)行集成,提供了對性能關(guān)鍵的原生功能的訪問。JavaCPP 使用

    2024年01月21日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包