Може хто гляне "свіжим оком" плз, бо я вже не знаю. Ось зображення:
(оскільки replace потенційно може змінювати якість зображення, то ось тут воно as is)
https://drive.google.com/file/d/1AFJbF2 … sp=sharing
Тепер пробую розпізнати числа: 0,05 і 2,34
requirements.txt написав:opencv-python>=4.5.0
pytesseract>=0.3.10
python -m pip install -r requirements.txt
import cv2
import pytesseract
import re
image_path = 'ocr.png'
image = cv2.imread(image_path)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
_, thresh = cv2.threshold(gray, 200, 255, cv2.THRESH_BINARY_INV)
data = pytesseract.image_to_data(thresh, config='--psm 6', output_type=pytesseract.Output.DICT)
numbers_with_positions = []
for i in range(len(data['text'])):
text = data['text'][i].strip()
if re.fullmatch(r"\d+\.\d+|\d+", text):
x = data['left'][i]
y = data['top'][i]
numbers_with_positions.append((x, y, text))
numbers_with_positions.sort(key=lambda pos: (pos[1], pos[0]))
numbers = [num[2] for num in numbers_with_positions]
print(f"Full Text Detected: {pytesseract.image_to_string(thresh, config='--psm 6').strip()}")
print(f"Extracted Numeric Values (in order): {numbers}")
але 0,05 чомусь не розпізнається
Full Text Detected: < 2.34 ug/g
00 Ww ;
Extracted Numeric Values (in order): ['00', '2.34']
.....?.....
Upd: допомогло коли зробив resize малюнку
gray = cv2.resize(gray, None, fx=2.5, fy=2.5, interpolation=cv2.INTER_CUBIC)
але тепер чомусь не можу відсортувати аутпут відповідно до порядку чисел на малюнку
# output
Full Text Detected: 2.34
0.05