第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 pytesseract 和 OpenCV 對平面圖屏幕截圖進行 OCR

使用 pytesseract 和 OpenCV 對平面圖屏幕截圖進行 OCR

肥皂起泡泡 2022-06-02 16:31:11
我正在嘗試編寫一個函數(shù),該函數(shù)將獲取房屋平面圖的 jpg 并使用 OCR 提取寫在圖像上某處的平方英尺    import requests    from PIL import Image    import pytesseract    import pandas as pd    import numpy as np    import cv2    import io    def floorplan_ocr(url):    """ a row-wise function to use pytesseract to scrape the word data from the floorplan    images, requires tesseract     to be installed https://github.com/tesseract-ocr/tesseract/wiki"""    if pd.isna(url):        return np.nan    res = ''    response = requests.get(url, stream=True)    if response.status_code == 200:        img = response.raw        img = np.asarray(bytearray(img.read()), dtype="uint8")        img = cv2.imdecode(img, cv2.CV_8UC1)        img = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,\            cv2.THRESH_BINARY,11,2)        #img = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 31, 2)        res = pytesseract.image_to_string(img,, config='--remove-background')        del response        del img    else:        return np.nan    #print(res)    return res但是,我并沒有取得太大的成功。只有大約四分之一的圖像實際輸出包含平方英尺的文本。例如當(dāng)前 floorplan_ocr(https://i.imgur.com/9qwozIb.jpg)輸出'K\'Fré?é?mmimmuuéé\n2|; apprnxx 135 max\nGArhaPpmxd1m max\n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\nTOTAL APPaux noon AREA 523 so Fr, us. a 50. M )\nav .Wzms him "a! m m... mi unwary mmnmrmm mma y“ mum“;\n‘ wmduw: reams m wuhrmmm mm“ .m nanspmmmmy 3 mm :51\nmm" m mmm m; wan wmumw- mm my and mm mm as m by any\nwfmw PM” rmwm mm m .pwmwm m. mum mud ms nu mum.\n(.5 n: ma undammmw an we Ewen\nM vagw‘m Mewpkeem'(并且需要很長時間才能完成)floorplan_ocr(https://i.imgur.com/sjxMpVp.jpg)輸出' '。我認(rèn)為我面臨的一些問題是:文本可能是灰度的圖像是低 DPI(如果這實際上很重要,或者如果它是總分辨率,似乎有些爭論)文本格式不一致我被困住了,正在努力提高我的成績。我想提取的只是“XXX sq ft”(以及所有可能的寫法)有一個更好的方法嗎?
查看完整描述

2 回答

?
繁花如伊

TA貢獻(xiàn)2012條經(jīng)驗 獲得超12個贊

在裁剪圖像的底部四分之一后,通過應(yīng)用這幾行來調(diào)整第二張圖像的大小和更改對比度/亮度:


img = cv2.imread("download.jpg")


img = cv2.resize(img, (0, 0), fx=2, fy=2)


img = cv2.convertScaleAbs(img, alpha=1.2, beta=-40)


text = pytesseract.image_to_string(img, config='-l eng --oem 1 --psm 3')

我設(shè)法得到了這個結(jié)果:


總約。樓層面積 528 平方英尺。(49.0 平方米)


盡管已盡一切努力確保此處包含的平面圖的準(zhǔn)確性,但門、窗、房間和任何其他項目的尺寸均為近似值,不對任何錯誤、遺漏或錯誤陳述承擔(dān)任何責(zé)任。該計劃僅用于@ustraative 目的,任何潛在購買者都應(yīng)按此使用。所示服務(wù)、系統(tǒng)和設(shè)備未經(jīng)測試,無法保證 a8 的可操作性或效率 Made with Metropix ?2019


我沒有對圖像進行閾值處理,因為您的圖像結(jié)構(gòu)彼此不同,并且由于圖像不僅是文本,因此 OTSU Thresholding 找不到正確的值。


回答所有問題:Tesseract 實際上最適合灰度圖像(白色背景上的黑色文本)。


關(guān)于 DPI/分辨率問題,確實存在一些爭論,但也有一些經(jīng)驗事實:DPI 值并不重要(因為相同 DPI 的文本大小可能會有所不同)。為了使 Tesseract OCR 發(fā)揮最佳效果,您的角色需要(已編輯 :) 30-33 像素(高度),小幾 px 會使 Tesseract 幾乎無用,而更大的字符實際上會降低準(zhǔn)確性,盡管不會顯著。(編輯:找到來源-> https://groups.google.com/forum/#!msg/tesseract-ocr/Wdh_JJwnw94/24JHDYQbBQAJ)


最后,文本格式并沒有真正改變(至少在你的例子中)。所以你這里的主要問題是文本大小,以及你解析整個頁面的事實。如果您想要的文本行始終位于圖像的底部,只需提?。ㄇ衅┠脑紙D像,以便您只向 Tesseract 提供相關(guān)數(shù)據(jù),這也將使其更快。


編輯:如果您還在尋找一種從您的 ocr'ed 文本中提取平方英尺的方法:


text = "some place holder text 5471 square feet some more text"

# store here all the possible way it can be written

sqft_list = ["sq ft", "square feet", "sqft"]

extracted_value = ""


for sqft in sqft_list:

    if sqft in text:

        start = text.index(sqft) - 1

        end = start + len(sqft) + 1

        while text[start - 1] != " ":

            start -= 1

        extracted_value = text[start:end]

        break


print(extracted_value)

5471平方英尺


查看完整回答
反對 回復(fù) 2022-06-02
?
慕碼人2483693

TA貢獻(xiàn)1860條經(jīng)驗 獲得超9個贊

文本周圍的所有像素化使得 Tesseract 更難做它的事情。我從這里使用了一個簡單的亮度/對比度算法來使這些點消失。我沒有做任何閾值/二值化。但我確實必須縮放圖像才能獲得任何字符識別。


import pytesseract   

import numpy as np

import cv2


img = cv2.imread('floor_original.jpg', 0) # read as grayscale

img = cv2.resize(img, (0,0), fx=2, fy=2)  # scale image 2X


alpha = 1.2

beta = -20

img = cv2.addWeighted( img, alpha, img, 0, beta)

cv2.imwrite('output.png', img)  


res = pytesseract.image_to_string(img,, config='--remove-background')

print(res)

編輯 上面的代碼可能有一些平臺/版本依賴。它在我的 Linux 機器上運行,但不在我的 Windows 機器上。為了讓它在 Windows 上運行,我將最后兩行修改為


res = pytesseract.image_to_string(img,, config='remove-background')

print(res.encode())

tesseract 的輸出(我添加了粗體以強調(diào)平方英尺):


TT xs?



近似總內(nèi)部面積 = 50.7 平方米 / 546 平方英尺


所有尺寸僅為估計值,可能不準(zhǔn)確。 測量計劃可能會發(fā)生變化。渲染圖 matenala,熔巖,apectes


ne 開發(fā)商、管理公司、業(yè)主和其他附屬公司重新獲得所有 ma ther sole discrebon 并且沒有 enor scbioe


jements Araxs 是近似值


處理后的圖像:

http://img1.sycdn.imooc.com//629875870001dd0a08641197.jpg

查看完整回答
反對 回復(fù) 2022-06-02
  • 2 回答
  • 0 關(guān)注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號