慕田峪4524236
2023-05-23 16:33:02
我使用了EAST?(高效準(zhǔn)確的場(chǎng)景文本檢測(cè)器)的以下PyTorch 實(shí)現(xiàn)來識(shí)別和繪制許多圖像中文本周圍的邊界框,效果非常好!pytesseract但是,為了從這些圖像中提取文本并將它們轉(zhuǎn)換為字符串,我正在嘗試使用 OCR 的下一步——失敗得很厲害。--oem使用和的所有可能配置--psm,我無法檢測(cè)到pytesseract看起來非常清晰的文本,例如:已識(shí)別的文本位于圖像下方。即使我應(yīng)用了對(duì)比度增強(qiáng),并嘗試了擴(kuò)張和腐蝕,我也無法讓 tesseract 識(shí)別文本。這只是許多圖像中文本更大更清晰的示例之一。關(guān)于轉(zhuǎn)換、配置或其他庫的任何建議都會(huì)有所幫助!更新:在嘗試高斯模糊 + Otso 閾值處理后,我能夠在白色背景上獲得黑色文本(顯然這是 pytesseract 的理想選擇),并且還添加了西班牙語,但它仍然無法閱讀非常純文本 - 例如:讀起來是胡言亂語。處理后的文本圖像是和我正在使用的代碼:img_path = './images/fesa.jpg'img = Image.open(img_path)boxes = detect(img, model, device)origbw = cv2.imread(img_path, 0)for box in boxes:? ??? ? box = box[:-1]? ? poly = [(box[0], box[1]),(box[2], box[3]),(box[4], box[5]),(box[6], box[7])]? ? x = []? ? y = []? ? for coord in poly:? ? ? ? x.append(coord[0])? ? ? ? y.append(coord[1])? ? startX = int(min(x))? ? startY = int(min(y))? ? endX = int(max(x))? ? endY = int(max(y))? ? #use pre-defined bounding boxes produced by EAST to crop the original image?? ??? ? cropped_image = origbw[startY:endY, startX:endX]? ? #contrast enhancement?? ? clahe = cv2.createCLAHE(clipLimit=4.0, tileGridSize=(8,8))? ? res = clahe.apply(cropped_image)? ? text = pytesseract.image_to_string(res, config = "-psm 12")? ??? ? plt.imshow(res)? ? plt.show()? ? print(text)
1 回答

qq_笑_17
TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊
本指南批評(píng)了開箱即用的性能(也許準(zhǔn)確性也會(huì)受到影響):
訓(xùn)練有素的數(shù)據(jù)。在撰寫本文時(shí),適用于 Ubuntu 18.10 的 tesseract-ocr-eng APT 包具有糟糕的開箱即用性能,可能是因?yàn)橛?xùn)練數(shù)據(jù)損壞。
根據(jù)我所做的以下測(cè)試,使用更新的數(shù)據(jù)文件似乎可以提供更好的結(jié)果。這是我使用的代碼:
import?pytesseract? from?PIL?import?Image? print(pytesseract.image_to_string(Image.open('farmacias.jpg'),?lang='spa',?config='--tessdata-dir?./tessdata?--psm?7'))
我將spa.traineddata(您的示例圖像有西班牙語單詞,對(duì)嗎?)下載到./tessdata/spa.traineddata
.?結(jié)果是:
ARMACIAS
對(duì)于第二張圖片:
PECIALIZADA:
我之所以使用,--psm 7
是因?yàn)檫@里說它的意思是“將圖像視為單個(gè)文本行”,我認(rèn)為這對(duì)您的測(cè)試圖像應(yīng)該有意義。
添加回答
舉報(bào)
0/150
提交
取消