распознавание изображений с использованием pytesseract python

у меня есть изображение, но я не могу узнать цену, это то, что у меня есть

import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract'
print(pytesseract.image_to_string("local-filename.jpg"))

вывод


Nestle Bakers’
Choice Melts
290g/

Choc Bits
200g


Altimate
Salted Caramel
Waffle Cones
12's


~ Seitarium ss, :
et-E Ly y ”.
oss a
=| x
) " 4
oat

.

FruitCo Juice 2 Litres
‘Apple/ Apricot/ Apple, Mange,
‘Banana/ Apple Pea

Cottee’s Jams

Betty Crocker Triple
500g

Sanitarium Weet-bix
750g Chocolate Muffin Mix 500g

 

Ss
>

s

Authentic Thai

; Sweet Chili Sauce
Vanilla em, ‘ 725ml

Dell

cours ® ‘OCOMUT HE


Sandhurst Coconut Milk

Chelsea Berry/ Vanilla
400m!

Icing Sugar 3759

  


Process finished with exit code 0

и это изображение, которое я пытаюсь проанализировать

введите описание изображения здесь

-Что мне нужно, так это цена изображения с соответствующим именем -я могу извлечь название продукта, но не могу узнать цену -как я могу добиться этого, любая помощь будет принята с благодарностью, обратите внимание, что я очень новичок в изображении обработка


person 6563cc10d2    schedule 29.03.2021    source источник
comment
Вау, это сложная проблема! Мое первое предложение - не помещать полное изображение в тессеракт, а разделить его на более мелкие части изображения. Например, вы можете попытаться найти красные круги, вырезать фрагмент изображения размером с круг и передать его в тессеракт, чтобы извлечь текст цены. Благодаря этому вы можете более легко настроить такие параметры, как размер символа.   -  person Sparkofska    schedule 29.03.2021
comment
проблема в том, что я не могу вырезать изображение, я получаю изображение с онлайн-сайта, который обновляется каждую неделю   -  person 6563cc10d2    schedule 01.04.2021
comment
попробуйте найти круги на изображении с помощью OpenCV (см. geeksforgeeks.org/circle-detection -using-opencv-python), тогда вы можете получить все координаты круга, а затем передать их тессеракту с символами белого списка (числа и символы валюты)   -  person Mathan    schedule 15.04.2021


Ответы (2)


пробовал два варианта:

  1. easyocr устанавливается через! pip install easyocr
  2. tesseract установлен через (на Mac) brew install tesseract

вот результаты:

  1. полное изображение, easyocr и tesseract не дали цены.
  2. взял только ценовой круг
     введите описание изображения здесь
image = cv2.imread('795.png')
print(pytesseract.image_to_string(sk1)) # printed spaces i.e no result

import easyocr
reader = easyocr.Reader(['en'],gpu = False) #  load model into memory once
result = reader.readtext(image,detail=0) # resul ['s7.95', 'cach']

easyocr работает лучше !!

далее на изображении с описанием продукта
 введите описание изображения здесь

image = cv2.imread('795 Product.png')
reader.readtext(image,detail=0)
'''
['Nestle',
 'eaa',
 'Nestle',
 'RuS',
 'aa',
 'melts',
 'PARKCHOC',
 'chocbts',
 'Nestle Bakers',
 'S',
 'Choice Melts',
 '290g/',
 'cach',
 'Choc Bits',
 '200g',
 'Nestle',
 '"8628',
 'nelts',
 '(Neste)',
 'JTE CHOC',
 '7.95']
'''
print(pytesseract.image_to_string(image))
'''
Nestle Bakers’
Choice Melts
290g/

Choc Bits
200g
'''

easyocr работал лучше с этими изображениями.

Вам нужно будет изучить, какой вариант вы хотите использовать. вы также можете попробовать рекомендации, предоставленные @nathancy Как обрабатывать и извлекать текст с изображения

person simpleApp    schedule 09.04.2021

Google Vision API дает лучшие результаты. Облако Google предлагает каждому пользователю бесплатные кредиты в размере 300 долларов США.

Ниже приведен фрагмент кода для того же.

def detect_text(path):
    """Detects text in the file."""
    from google.cloud import vision
    import io
    client = vision.ImageAnnotatorClient()

    with io.open(path, 'rb') as image_file:
        content = image_file.read()

    image = vision.Image(content=content)

    response = client.text_detection(image=image)
    texts = response.text_annotations
    print('Texts:')

    for text in texts:
        print('\n"{}"'.format(text.description))

        vertices = (['({},{})'.format(vertex.x, vertex.y)
                    for vertex in text.bounding_poly.vertices])

        print('bounds: {}'.format(','.join(vertices)))

    if response.error.message:
        raise Exception(
            '{}\nFor more info on error messages, check: '
            'https://cloud.google.com/apis/design/errors'.format(
                response.error.message))
person AVISHEK GARAIN    schedule 15.04.2021