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平方英尺

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 是近似值
處理后的圖像:
添加回答
舉報