所以,从我能开始的地方来看...
我正在使用OCR进行工作。这个脚本对我需要的内容非常有效。它可以准确地检测出单词,对我来说已经足够了。
这是结果:使用附加图像100%准确率。
现在的问题是:如何从图像中删除存在于输出OCR列表(在代码中命名为
我认为ocr通过选择文本区域并在文本周围创建边界框来工作。在这种情况下,如何删除(甚至显示)此ROI /边界框? 在
任何帮助/提示都将不胜感激。
谢谢
编辑:此代码向我显示每个字符的边界框
我正在使用OCR进行工作。这个脚本对我需要的内容非常有效。它可以准确地检测出单词,对我来说已经足够了。
这是结果:使用附加图像100%准确率。
from PIL import Image
import pyocr.builders
import os
os.putenv("TESSDATA_PREFIX", "C:\\Program Files (x86)\\Tesseract-OCR")
tools = pyocr.get_available_tools()
tool = tools[0]
langs = tool.get_available_languages()
lang = langs[0] #eng
file = "test.png"
txt = tool.image_to_string(Image.open(file), lang=lang, builder=pyocr.builders.TextBuilder())
print(txt + '\n')
'''
word = ['SHINE','ON','YOU','CRAZY','DIAMOND','SYD']
if word[2] in txt:
print("## WORD IN LIST ##")
else:
print("## NOT IN LIST ##")'''
现在的问题是:如何从图像中删除存在于输出OCR列表(在代码中命名为
txt
)中的单词?
我的意思是,如果单词SHINE存在于控制台(和列表)中的输出中,我该如何在图像中删除它?或者,如果不删除,创建一个遮罩层,以便我可以隐藏它...我认为ocr通过选择文本区域并在文本周围创建边界框来工作。在这种情况下,如何删除(甚至显示)此ROI /边界框? 在
pyocr
文档中,有一些关于此函数(显示边界框)的提示,但我不知道如何使用它。任何帮助/提示都将不胜感激。
谢谢
编辑:此代码向我显示每个字符的边界框
import csv
import cv2
from pytesseract import pytesseract as pt
pt.run_tesseract('test.png', 'output', lang=None, boxes=True, config="hocr")
# To read the coordinates
boxes = []
with open('output.box', 'rt') as f:
reader = csv.reader(f, delimiter = ' ')
for row in reader:
if len(row) == 6:
boxes.append(row)
# Draw the bounding box
img = cv2.imread('test.png')
h, w, _ = img.shape
for b in boxes:
img = cv2.rectangle(img,(int(b[1]),h-int(b[2])),(int(b[3]),h-int(b[4])),(255,0,0),2)
cv2.imshow('output', img)
cv2.waitKey(0)
我该如何告诉它只显示第一个(完整的)单词?
<=
您设置的固定阈值),确定哪个字符在单词中或检测序列中的哪个字符。 - tuan.trancv2.rectangle(img,(int(b[1]),h-int(b[2])),(int(b[3]),h-int(b[4])),(255, 255,255),-1)
。 - geledek