0

我正在开发一个名为 Business Card Scanner 的项目。我正在使用 pytesseract 从图像中提取文本,然后使用正则表达式和其他技术对获得的文本进行分类。

每当图像中有徽标时,tesseract 将其视为文本并尝试读取它。这会导致无意义的文本。考虑下面的图像示例:

IMG

这是我试图提取文本的内容:

# Google colab
# read required libraries
img = cv2.imread("img2.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (5,5),0)
ret3, thresh = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
cv2_imshow(thresh)
text = pytesseract.image_to_string(thresh, lang = 'eng'); print(text)

这是我运行上述代码时得到的输出:

: eM , NOEs Efe: Mb fes fe y Ky TEP ON PILLS cag
gy: Ye Ws My Wii WL, FLY T by,

i igs Mg ER te EB iy MY, Gee.
: WO Ee as _ he i. "4 ‘; y sen “iy ye age i ‘ el HY tiber My, ee ered fi! ", ty Mf

Mm Gujarat TE og
: , fp bet
(x = Technological ( Wy, ey,

sae ae e . Tf) :
wage University ~~ es

e e é et

ikhil Suthar lees
fy Lg. Z - “fe " ‘Sa
. ve 7, of

Regional Coordinator - OSD MWe) Dh
ye

Mob. <hidden>

Email : <hidden>

Govt. Technical High School Campus, Near Aurobindo
Ashram Dandia Bazar,Vadodara - 390001, Gujarat, India
www.gtu.ac.in | www-gtuinnovationcouncil.2¢.in

i Ae

; ew, OD
t eS ft me ' @
ate
ary ya
j my

ee |
a

有没有办法可以删除由于徽标而产生的不需要的文本(这就是我的想法)?如果我的问题需要其他信息,请告诉我。

4

1 回答 1

1

图像的背景是问题。您可以通过选择高度范围来省略

例如:如果您选择之间的高度范围:h/4 - (3*h)/4,结果将是:(由于超过 2MiB,图像被调整大小。)

在此处输入图像描述

当你阅读:

Nikhil Suthar
Regional Coordinator - OSD

Email | Mob. |

Govt. Technical High School Campus, Near Aurobindo
Ashram Dandia Bazar, Vadodara - 390001, Gujarat, India
www.gtu.ac.in | www.gtuinnovationcouncil.ac.in

代码:


import cv2
from pytesseract import image_to_string

img = cv2.imread("Oa9svHu.jpeg")
gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
(h, w) = gry.shape[:2]
gry = gry[int(h/4):int((3*h)/4), 0:w]
txt = image_to_string(gry)
print(txt.strip())
cv2.imshow("gry", gry)
cv2.waitKey(0)
于 2021-02-11T17:32:51.527 回答