-
Anonymous
Распознавание текста с помощью pytesseract и cv2 или других библиотек
Сообщение
Anonymous »
Загрузите файл PNG и сохраните его как «sample.png».
Я хочу извлечь английские символы из файла png.
Код: Выделить всё
import cv2
import pytesseract
img = cv2.imread("sample.png")
gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
thr = cv2.adaptiveThreshold(gry, 255, cv2.ADAPTIVE_THRESH_MEAN_C,
cv2.THRESH_BINARY_INV, 23, 100)
bnt = cv2.bitwise_not(thr)
txt = pytesseract.image_to_string(bnt, config="--psm 6")
res = ''.join(i for i in txt if i.isalnum())
print(res)
Вывод:
Еще одна попытка:
Код: Выделить всё
import cv2
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'/bin/tesseract'
image = cv2.imread('sample.png')
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
inverted_image = cv2.bitwise_not(gray_image)
binary_image = cv2.adaptiveThreshold(inverted_image, 255,
cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY, 11, 2)
denoised_image = cv2.medianBlur(binary_image, 3)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (4, 4))
eroded_image = cv2.erode(denoised_image, kernel)
mask = (denoised_image == 255) & (eroded_image == 0)
denoised_image[mask] = 0
cv2.imwrite('preprocessed_image.png', denoised_image)
text = pytesseract.image_to_string(denoised_image, config='--psm 6')
print("result:", text.strip())
Получите более точный результат, чем первый:
Это 5 вместо S в sample.png. Как мне тогда улучшить код?
Где тогда цифра 5?
Подробнее здесь:
https://stackoverflow.com/questions/792 ... other-libs
1734206301
Anonymous
Загрузите файл PNG и сохраните его как «sample.png».
[img]https://i.sstatic.net/M6ywO7up .png[/img]
Я хочу извлечь английские символы из файла png.
[code]import cv2
import pytesseract
img = cv2.imread("sample.png")
gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
thr = cv2.adaptiveThreshold(gry, 255, cv2.ADAPTIVE_THRESH_MEAN_C,
cv2.THRESH_BINARY_INV, 23, 100)
bnt = cv2.bitwise_not(thr)
txt = pytesseract.image_to_string(bnt, config="--psm 6")
res = ''.join(i for i in txt if i.isalnum())
print(res)
[/code]
Вывод:
[code]ee
[/code]
Еще одна попытка:
[code]import cv2
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'/bin/tesseract'
image = cv2.imread('sample.png')
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
inverted_image = cv2.bitwise_not(gray_image)
binary_image = cv2.adaptiveThreshold(inverted_image, 255,
cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY, 11, 2)
denoised_image = cv2.medianBlur(binary_image, 3)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (4, 4))
eroded_image = cv2.erode(denoised_image, kernel)
mask = (denoised_image == 255) & (eroded_image == 0)
denoised_image[mask] = 0
cv2.imwrite('preprocessed_image.png', denoised_image)
text = pytesseract.image_to_string(denoised_image, config='--psm 6')
print("result:", text.strip())
[/code]
Получите более точный результат, чем первый:
[code]result:CRSP
[/code]
Это 5 вместо S в sample.png. Как мне тогда улучшить код?
[img]https://i.sstatic.net/53tJITsH.png[/img]
Где тогда цифра 5?
Подробнее здесь: [url]https://stackoverflow.com/questions/79261741/text-recognition-with-pytesseract-and-cv2-or-other-libs[/url]