为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Tesseract 识别页面上的单个字符

使用 Tesseract 识别页面上的单个字符

牛魔王的故事 2022-07-19 15:10:49
此图像返回空字符串;基本上我正在尝试为 WOW 游戏制作一个机器人,但我对这个 OCR 东西真的很陌生。我无法让 tesseract 阅读这张图片;我想要一个无序列表的字符以及包含它们的每个正方形的坐标(如果可能)。有没有办法做到这一点?感谢您的时间!这是我的代码:from PIL import Imageimport cv2from pytesseract import image_to_stringcolumn = Image.open('photo.png')gray = column.convert('L')blackwhite = gray.point(lambda x: 255 if x < 200 else 0, '1')blackwhite.save("code_bw.jpg")print(image_to_string(cv2.imread("code_bw.jpg")))
查看完整描述

1 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

您需要做一些预处理来隔离文本字符。一个简单的方法是使用 Otsu 的阈值来获得二值图像,然后我们可以找到轮廓并使用纵横比 + 轮廓区域进行过滤。这将为我们提供文本的边界框坐标,我们可以将其绘制到蒙版上。我们按位和输入图像的掩码得到我们的清洁图像,然后将其放入 OCR。结果如下:

检测到的文本字符

//img1.sycdn.imooc.com//62d65925000195a502740286.jpg

结果


//img1.sycdn.imooc.com//62d6592c00014c1502750282.jpg

OCR 的结果


A

A R

P

代码


import cv2

import pytesseract

import numpy as np


pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"


# Load image, grayscale, Otsu's threshold

image = cv2.imread('1.jpg')

original = image.copy()

mask = np.zeros(image.shape, dtype=np.uint8) 

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]


# Find contours and filter using aspect ratio and area

cnts = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

cnts = cnts[0] if len(cnts) == 2 else cnts[1]

for c in cnts:

    area = cv2.contourArea(c)

    x,y,w,h = cv2.boundingRect(c)

    ar = w / float(h)

    if area > 1000 and ar > .85 and ar < 1.2:

        cv2.rectangle(image, (x, y), (x + w, y + h), (36,255,12), 2)

        cv2.rectangle(mask, (x, y), (x + w, y + h), (255,255,255), -1)

        ROI = original[y:y+h, x:x+w]


# Bitwise-and to isolate characters 

result = cv2.bitwise_and(original, mask)

result[mask==0] = 255


# OCR

data = pytesseract.image_to_string(result,,config='--psm 6')

print(data)


cv2.imshow('image', image)

cv2.imshow('thresh', thresh)

cv2.imshow('result', result)

cv2.waitKey()


查看完整回答
反对 回复 2022-07-19
  • 1 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信