Как повысить точность извлечения текста по изображениюPython

Программы на Python
Ответить
Anonymous
 Как повысить точность извлечения текста по изображению

Сообщение Anonymous »

Код: Выделить всё

import cv2
import pytesseract
import numpy as np

image_path = "elecBill.jpg"

img = cv2.imread(image_path)

# Resize (VERY IMPORTANT)
img = cv2.resize(img, None, fx=2, fy=2, interpolation=cv2.INTER_CUBIC)

# Convert to grayscale
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# Increase contrast using CLAHE
clahe = cv2.createCLAHE(clipLimit=3.0, tileGridSize=(8,8))
gray = clahe.apply(gray)

# Denoise
gray = cv2.bilateralFilter(gray, 9, 75, 75)

# Strong adaptive threshold
thresh = cv2.adaptiveThreshold(
gray,
255,
cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY,
31,
10
)

# OCR with better config for receipts
custom_config = r'--oem 3 --psm 4'

text = pytesseract.image_to_string(thresh, config=custom_config)

import re
def extract_data(text):
data = {}

clean_text = text.replace('\n', ' ').replace('\r', ' ')

#  Extract all dates
dates = re.findall(r'\d{2}[/-]\d{2}[/-]\d{2,4}', clean_text)
if dates:
data["dates_found"] = dates

#  Extract all decimal numbers
numbers = re.findall(r'\d+\.\d+', clean_text)

if numbers:
# Convert to float for comparison
float_numbers = [float(n) for n in numbers]

# Largest number often = total payable
largest = max(float_numbers)
data["largest_amount_guess"] = largest

# Keyword based search
keyword_patterns = {
"bill_amount": r'(Bill|Total|Net).{0,20}?(\d+\.\d+)',
"units": r'Units.{0,10}?(\d+)'
}

for key, pattern in keyword_patterns.items():
match = re.search(pattern, clean_text, re.IGNORECASE)
if match:
data[key] = match.group(match.lastindex)

return data

extracted = extract_data(text)

print("\n------ EXTRACTED DATA ------")
print(extracted)
Привет, ребята, вот полный код. Я использую эту программу для извлечения текста из счетов-фактур. И мне хотелось бы повысить точность, чтобы получить точный текст. Как я могу это сделать? В большинстве случаев я получаю какую-то тарабарщину и т. д.
Любая помощь будет полезна. А это мой полный код программы, которую я создал.

Подробнее здесь: https://stackoverflow.com/questions/799 ... -the-image
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»