Распознать текст с обработанного изображения opencv
import cv2
def find_number(input_img, k):
haar_cascade = cv2.CascadeClassifier('cascade.xml')
dim = (int(input_img.shape[1]*k), int(input_img.shape[0] * k))
resized_img = cv2.resize(input_img, dim, interpolation=cv2.INTER_AREA)
gray_scale_img = cv2.cvtColor(resized_img, cv2.COLOR_BGR2GRAY)
pictures = haar_cascade.detectMultiScale(gray_scale_img, scaleFactor=1.40, minNeighbors=15, minSize=(20, 20))
recognized = []
for (x, y, w, h) in pictures:
cv2.rectangle(resized_img, (x, y), (x + w, y + h), (255, 0, 0), 2)
recognized.append(resized_img[y:y + h, x:x + w])
return recognized
img = cv2.imread('test/26.jpg')
images = find_number(img, 0.9)
if len(images) > 0:
for i in range(len(images)):
cv2.imshow(str(i), images[i])
cv2.waitKey(0)
cv2.destroyAllWindows()
Код обрабатывает изображение, выводя автомобильный номер в качестве картинки. Нужно считать этот номер непосредственной с обработанной картинки. Каким образом это сделать? Уже и через pytesseract и easyocr пытался, ничего дельного не получалось.
Ответы (1 шт):
Автор решения: guyfcc
→ Ссылка
Что бы не марочить мозги с библиотеками, вы можете воспользоваться api
import requests
def orc(url):
r = requests.post('https://api.ocr.space/parse/image', data={'url': url, 'isOverlayRequired': False, 'apikey': 'helloworld', "OCREngine": "2"})
return False if r.json()["IsErroredOnProcessing"] == True else r.json()["ParsedResults"][0]["ParsedText"].replace(" ", "")
test_url = orc('https://cdn.discordapp.com/attachments/952990044539473980/953680748257370112/capha-1.png')
print(test_url)