日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pytesseract提取识别图片中的文字

發布時間:2023/12/31 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pytesseract提取识别图片中的文字 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

1、獲取tesseract版本號

2、獲取語言包列表

3、識別圖片中的文字

4、獲取圖片中文字的詳細信息

5、識別圖片中的文字和位置

6、識別osd信息

7、識別并生成xml文件

避坑指南:


?pytesseract是對Tesseract-OCR命令行的封裝,實際上底層調用的還是tesseract可執行文件,所以在使用pytesseract前需要完成Tesseract-OCR軟件安裝和語言包安裝,詳細方法可以參考?Tesseract-OCR5.0軟件安裝和語言包安裝(Windows系統)。

pytesseract可以通過pip安裝,當前(2021.11)最新版本為0.3.8:

pip install pytesseract

1、獲取tesseract版本號

get_tesseract_version()獲取tesseract的版本號,注意并不是pytesseract的版本號:

#juzicode.com / VX公眾號:桔子code import pytesseract as ts version = ts.get_tesseract_version() print('version:',version)

運行結果:

version: 5.0.0-rc1.20211030

結果和在命令行執行”tesseract –version”看到的版本號是一樣的:

E:\juzicode\tess>tesseract --version tesseract v5.0.0-rc1.20211030

2、獲取語言包列表

通過get_languages()獲取安裝的語言包列表:

#juzicode.com / VX公眾號:桔子code import pytesseract as ts langs = ts.get_languages() print('langs:',langs)

運行結果:

langs: ['chi_sim', 'eng', 'osd']

和在命令行用“tesseract –list-langs”檢查語言包得到的結果是一樣的:

E:\juzicode\tess>tesseract --list-langs List of available languages (3): chi_sim eng osd

3、識別圖片中的文字

image_to_string()用來識別圖片中的文字,最簡單的用法傳入2個入參,一個是圖片的文件名稱,一個是識別所用的語言包類型,比如要識別下圖中的文字,這是一段從pdf文件中截屏的片段,文件名為bookseg.png,語言包選擇chi_sim:

img_fn = 'bookseg.png' lang = 'chi_sim' text = ts.image_to_string(img_fn,lang) print(text)

運行結果:

引 言數 字 圖 像 處 理 方 法 的 重 要 性 源 于 兩 個 主 要 應 用 領 域 : 改 善 圖 示 信 息 以 便 人 們 解 釋 ; 為 存 儲 、 傳 輸 和 表 示 而 對 圖 像 數 據 進 行 處 理 , 以 便 于 機 器 自 動 理 解 。 本 章 有 幾 個 主 要 目 的 : (1) 定 義 我 們 稱 之 為 圖 像 處 理 領 域 的 范 圍 ; (2) 從 歷 史 觀 點 回 顧 圖 像 處 理 的 起 源 ; (3) 通 過 考 察 一 些 主 要 的 應 用 領 域 , 給 出圖 像 處 理 技 術 狀 況 的 概 念 ; (4) 筒 要 討 論 數 字 圖 像 處 理 中 所 用 的 主 要 方 法 ; (5) 概 述 通 用 目 的 的 典 型 圖 像 處 理 系 統 的 組 成 ; (6) 列 出 公 開 發 表 的 數 字 圖 像 處 理 領 域 的 一 些 圖 書 和 文 獻 。

從這個例子可以看到識別清晰度較高的圖片效果還是非常好的。

除了前面介紹的傳入圖片文件名稱的方法,還可以傳入圖像的numpy數組,這樣就可以和pillow、opencv等模塊配合使用,在某些場合下就可以先用pillow或opencv等做一些預處理再傳入到image_to_string()中識別。

img_fn = 'bookseg.png' lang = 'chi_sim' img = cv2.imread(img_fn,0) cv2.imwrite('gray-bin.jpg',img) text = ts.image_to_string(img,lang) #第1個參數傳入numpy類型 print(text)

image_to_string()還可以用config參數配置tesseract的命令選項,所有的可選參數組成一個字符串傳給config入參,使用方法為:

text = ts.image_to_string(img,lang,config='--psm 6 --oem 1 --loglevel ALL')

詳細的參數選項有如下幾種,可以通過tesseract的help命令查詢到:

OCR options:--tessdata-dir PATH Specify the location of tessdata path.--user-words PATH Specify the location of user words file.--user-patterns PATH Specify the location of user patterns file.--dpi VALUE Specify DPI for input image.--loglevel LEVEL Specify logging level. LEVEL can beALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL or OFF.-l LANG[+LANG] Specify language(s) used for OCR.-c VAR=VALUE Set value for config variables.Multiple -c arguments are allowed.--psm NUM Specify page segmentation mode.--oem NUM Specify OCR Engine mode. NOTE: These options must occur before any configfile.

4、獲取圖片中文字的詳細信息

image_to_data()用來獲取識別出來的文字的詳細信息,包含識別到的文本內容,可信度,位置等:

img_fn = 'bookseg.png' lang = 'chi_sim' data = ts.image_to_data(img_fn,lang) print(data)

運行結果:

最后一列是識別出來的文本內容,往前一列是識別出來的可信度,再往前4列是在圖片中的位置,包含left,top,width,height等4個要素。

注意image_to_data()返回的是str類型的數據,如果要使用其中的conf可信度,left,top等位置信息,還需要經過提取、轉換才能得到。

5、識別圖片中的文字和位置

image_to_boxes()用來獲取識別出來的文字和位置信息:

img_fn = 'bookseg.png' lang = 'chi_sim' boxes = ts.image_to_boxes(img_fn,lang) print(boxes)

運行結果:

這種方法得到的位置信息和image_to_data()中得到的left,top,width,height位置信息是一樣的。同樣image_to_data()返回的結果也是一個字符串,如果要使用其中的單個字符和位置信息,也需要進行提取和轉換。

6、識別osd信息

image_to_osd()返回識別到的osd信息:

img_fn = 'bookseg.png' lang = 'chi_sim' osd = ts.image_to_osd(img_fn,lang) print(osd) print(type(osd))

運行結果:

Page number: 0 Orientation in degrees: 0 Rotate: 0 Orientation confidence: 37.74 Script: Han Script confidence: 1.43<class 'str'>

7、識別并生成xml文件

image_to_pdf_or_hocr()可以將識別的文字信息轉為xml格式字節流,從而可以寫入到xml文件中,其中入參extension設置為’hocr’:

img_fn = 'bookseg.png' lang = 'chi_sim' hocr = ts.image_to_pdf_or_hocr(img_fn, lang, extension='hocr') with open('test.xml', 'w+b') as f:f.write(hocr) print(type(hocr))

調用image_to_pdf_or_hocr()返回的數據類型為bytes類型,這點和前面幾種方法的返回結果是有差異的,bytes類型可以用wb方式寫入到文件,寫入完成后打開文件可以看該文件包含了識別文字、可信度、位置信息等內容:

原文鏈接:http://www.juzicode.com/image-ocr-pytesseract

避坑指南:

1、提示tesseract未安裝錯誤:

import pytesseract as ts version = ts.get_tesseract_version() print('version:',version)======運行結果 FileNotFoundError: [WinError 2] 系統找不到指定的文件。 ...... pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your PATH. See README file for more information.

原因:一個是沒有安裝tesseract命令行工具,一個是安裝完后沒有把安裝路徑添加到PATH系統變量中。

2、獲取不到支持的語言包:

img_fn = 'bookseg.png' lang = 'chi_sim' text = ts.image_to_string(img_fn,lang,config='--tessdata-dir d:\\dev\\Tesseract-OCR5.0.0\\tessdata') print(text)======運行結果 pytesseract.pytesseract.TesseractError: (1, 'Error opening data file d:devTesseract-OCR5.0.0tessdata/chi_sim.traineddata Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory. Failed loading language \'chi_sim\' Tesseract couldn\'t load any languages! Could not initialize tesseract.')

使用config參數指定語言包路徑時,不能使用右斜杠,只能使用左斜杠。

#text = ts.image_to_string(img_fn,lang,config='--tessdata-dir d:\\dev\\Tesseract-OCR5.0.0\\tessdata') text = ts.image_to_string(img_fn,lang,config='--tessdata-dir d:/dev/Tesseract-OCR5.0.0/tessdata')

3、使用–oem 0選項時提示不支持老版本的ocr引擎,需要切換為–oem 1或者不指明oem默認使用新的ocr引擎:

img_fn = 'bookseg.png' lang = 'eng' text = ts.image_to_string(img_fn,lang,config='--oem 0')======運行結果 pytesseract.pytesseract.TesseractError: (1, "Error: Tesseract (legacy) engine requested, but components are not present in d:\\dev\\Tesseract-OCR5.0.0/tessdata/eng.traineddata!! Failed loading language 'eng' Tesseract couldn't load any languages! Could not initialize tesseract.")

推薦閱讀:

有了這個方法群聊斗圖你就不會輸了

只需幾行代碼生成22種風格各異的彩色圖

你別耍我,0.1+0.2居然不等于0.3?

如何實現一個“萬能”的調試打印函數

有了這款神器,什么吃灰文件都統統現形

一行代碼深度定制你的專屬二維碼(amzqr)

桔子菌和超市老板田大爺的一次角色互換經歷

改造getpass,強迫癥患者再也不用擔心少輸字符了

來看看怎么用OpenCV解構Twitter大牛的視覺錯覺圖

總結

以上是生活随笔為你收集整理的pytesseract提取识别图片中的文字的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。