Как вы сканируете символы в многосимвольных многострочных массивах в Python? - PullRequest
0 голосов
/ 21 марта 2019

Я работаю над своим первым проектом на Python для устройства, которое читает строку из OCR и выводит шрифт Брайля.Устройство Брайля может выводить только 6 букв за раз.Я застрял, пытаясь отсканировать каждый символ в многострочном массиве длиной 6 символов.

Для простоты, сейчас я хочу напечатать только "это (вставить символ)" для каждого символа в мультимассив строкВ действительности, результатом будет запуск кода, который говорит первым двум двигателям создать символ в Брайле, а затем сделать это для оставшихся 5 символов с 10 оставшимися двигателями с короткой задержкой между каждой строкой длиной 6 символов.Как отсканировать каждую 6-символьную длинную строку и зациклить ее для остальных строк в массиве?

Вот где я сейчас нахожусь:

from PIL import Image
import pytesseract


img = Image.open('img file path')
text = [item for item in (pytesseract.image_to_string(img, lang='eng', config='--psm 6')).split('\n')]
oneLineStr = ' '.join(text)
# displays: The quick brown fox jumps over the lazy dog.
print(oneLineStr)

arr6elem = []
for idx in range(0, len(oneLineStr), 6):
    arr6elem.append(oneLineStr[idx:idx + 6])
# displays: ['The qu', 'ick br', 'own fo', 'x jump', 's over', ' the l', 'azy do', 'g.']
print(arr6elem)

# Don't know what to do from this point
# Want to scan each 6-element string in list and for each string, see which elements it consists of
# (capital/lower case characters, numbers, spaces, commas, apostrophes, periods, etc.)
# Then, print "this is a" for letter a, or "this is a colon" for :, etc.
# So that output looks like:
# ["'this is T', 'this is h', 'this is e', this is a space', 'this is q', 'this is u'", "'this is i', 'this is c'...]

1 Ответ

1 голос
/ 21 марта 2019

Словарь должен справиться с задачей:

punctuation = {
    ' ': 'a space',
    ',': 'a comma',
    "'": 'an apostrophes',
    '.': 'a period'
}

for word in arr6elem:
    for char in word:
        print('This is {}'.format(punctuation.get(char, char)))

После того, как вы построите свой знак препинания со всеми необходимыми элементами, цикл либо получит из него соответствующее значение, либо по умолчанию будет фактическимсимвол.

Output:
# This is T
# This is h
# This is e
# This is a space
# This is q
# This is u
# This is i
# This is c
# This is k
# This is a space
# This is b
# This is r
# This is o
# This is w
# This is n
# This is a space
# This is f
# ...
...