繁体   English   中英

如何从图像中突出显示的文本中提取文本

[英]How to extract text from the highlighted text from an image

我有一个从图像中突出显示用户名的代码,我想从该图像中提取文本,即用户名。 下面是代码

import matplotlib.pyplot as plt
import cv2
import easyocr
from pylab import rcParams
from IPython.display import Image
rcParams['figure.figsize'] = 8, 16
reader = easyocr.Reader(['en'])
output = reader.readtext('MP-SAMPLE1.jpg')
cord = output[-106][0]
x_min, y_min = [int(min(idx)) for idx in zip(*cord)]
x_max, y_max = [int(max(idx)) for idx in zip(*cord)]

image = cv2.imread('MP-SAMPLE1.jpg')
cv2.rectangle(image,(x_min,y_min),(x_max,y_max),(0,0,255),2)
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))

我已经根据我的图片设置了坐标,你可以根据你的调整,我需要提取矩形框下突出显示的文本。 我是这个领域的新手,请忽略我可能犯的任何错误。

在此处输入图像描述

在此处输入图像描述

这是我对问题的部分解决方案。

由于您是初学者,让我给您一个建议,始终从预处理开始。

预处理将帮助您删除不需要的伪影。

例如,您可以进行thresholdingThresholding-result

median过滤:中值过滤结果

我使用了thresholding ,那么你可以使用pytesseract库。 该库包含很多配置选项

同样对于非英语语言,您可以按照本教程进行操作。

因此,您需要FATHERS HUSBANDS旁边的文本。 因此我们可以做

    1. 将图像转换为文本。

      •  text = pytesseract.image_to_string(Image.open(f_name), lang='eng')
    1. 从文本中找到FATHERS HUSBANDS的等价物

      • for line in text.split('\n'): if "FATHERS HUSBANDS" in line: name = line.split('.')[1].split(',')[0] print(name)
      • 结果:

        •  GRAMONAN GROVER

姓是正确的,但名字是部分正确的,应该是BRAJMONAN

我写了这个答案,希望你能指导你的解决方案。 祝你好运。

代码:


import os
import cv2
import pytesseract

from PIL import Image

img = cv2.imread("FXSCh.jpg")
gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# threshold
gry = cv2.threshold(gry, 0, 255,
                    cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]

f_name = "{}.png".format(os.getpid())
cv2.imwrite(f_name, gry)

text = pytesseract.image_to_string(Image.open(f_name), lang='eng')

for line in text.split('\n'):
    if "FATHERS HUSBANDS" in line:
        name = line.split('.')[1].split(',')[0]
        print(name)

os.remove(f_name)

cv2.imshow("Image", img)
cv2.imshow("Output", gry)
cv2.waitKey(0)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM