Pytesseract не может прочитать текст с очень простого изображения

Для этого вам нужно выяснить некоторые пути.

Попробуйте следующее:

Set-Alias sz "C:\Program Files\7-Zip\7z.exe"

$zipFile = "C:\temp\10 yard Fight.zip"

# Get Name of file without extension or path
$zipFolderToCreate = (gci $zipFile).BaseName

# Get path of zip
$path = (gci $zipFile).Directory.FullName

sz x -o"$path\*" "$zipFile"  -r

$filecount= (dir "$path\$zipFolderToCreate" | measure).Count
-2
задан hegash 20 January 2019 в 14:58
поделиться

2 ответа

Попытка сделать что-то похожее на

import pytesseract 
from PIL import Image 
import requests 
import io

response = requests.get('https://i.stack.imgur.com/J2ojU.png') 
text = pytesseract.image_to_string(Image.open(io.BytesIO(response.content)), lang='eng',
                    config='--psm 7')

print(text)

со значениями --psm, равными или большими, чем 6, дала мне «Gm».

Если изображение хранится локально (и в вашем рабочем каталоге), просто отбросьте переменную response и измените определение text со строками

image_name = "J2ojU.png" # or whatever appropriate
text = pytesseract.image_to_string(Image.open(image_name), lang='eng', config='--psm 7')
0
ответ дан Davide Fiocco 20 January 2019 в 14:58
поделиться

Есть несколько причин:

  1. Края не острые и непрерывные (Под острым я имею в виду гладкие, а не с зубами)

  2. Image слишком мал, вам нужно изменить размер

  3. Шрифт отсутствует (не обязательно, но обученный шрифт невероятно улучшает возможность распознавания)

На основе пункты 1) и 2) я смог распознать текст.

1) Я изменил размеры изображения 3x и 2) Я размыл изображение, чтобы сделать края сглаженными

import pytesseract
import cv2
import numpy as np
import urllib
import requests
pytesseract.pytesseract.tesseract_cmd = 'C:/Program Files (x86)/Tesseract-OCR/tesseract'
from PIL import Image

def url_to_image(url):
    resp = urllib.request.urlopen(url)
    image = np.asarray(bytearray(resp.read()), dtype="uint8")
    image = cv2.imdecode(image, cv2.IMREAD_COLOR)
    return image

url = 'https://i.stack.imgur.com/J2ojU.png'

img = url_to_image(url)



retval, img = cv2.threshold(img,200,255, cv2.THRESH_BINARY)
img = cv2.resize(img,(0,0),fx=3,fy=3)
img = cv2.GaussianBlur(img,(11,11),0)
img = cv2.medianBlur(img,9)
cv2.imshow('asd',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
txt = pytesseract.image_to_string(img)
print('recognition:', txt)
>> recognition: Gm

Примечание:

Этот скрипт хорош для тестирования любого изображения в сети

Примечание 2:

Вся обработка основана на вашем размещенном изображении

Примечание 3:

Распознавание текста не легко. Каждое признание требует специальной обработки. Если вы попытаетесь выполнить эти шаги с другим изображением, оно может вообще не работать. Важно много опознать на изображениях, чтобы вы понимали, чего хочет тессеракт

0
ответ дан Zoe 20 January 2019 в 14:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: