Anonymous
Распознавание текста с помощью pytesseract и cv2 или других библиотек
Сообщение
Anonymous » 14 дек 2024, 18:37
Загрузите файл 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
1734190674
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]