Распознавание текста с документов

Распознавание текста с документов


pip install pytesseract opencv-python pillow


import cv2

import pytesseract

from PIL import Image

import re


# Укажи путь к tesseract, если он не в PATH (особенно Windows)

# pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'


def load_image(path):

  """

  Загружает и конвертирует изображение в формат, подходящий для OCR.

  """

  img = cv2.imread(path)

  gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Перевод в ЧБ

  _, thresh = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY) # Бинаризация

  return thresh


def extract_text(image):

  """

  Извлекает текст с изображения с помощью Tesseract OCR.

  """

  return pytesseract.image_to_string(Image.fromarray(image), lang='rus+eng')


def extract_key_info(text):

  """

  Ищет ключевые данные по регулярным выражениям.

  """

  info = {}


  # Примеры шаблонов

  passport = re.search(r'\b\d{4}\s?\d{6}\b', text)

  inn = re.search(r'\b\d{12}\b', text)

  snils = re.search(r'\b\d{3}[-\s]?\d{3}[-\s]?\d{3}[-\s]?\d{2}\b', text)


  if passport:

    info["Паспорт РФ"] = passport.group()

  if inn:

    info["ИНН"] = inn.group()

  if snils:

    info["СНИЛС"] = snils.group()


  return info


def analyze_document(path):

  image = load_image(path)

  text = extract_text(image)

  key_data = extract_key_info(text)


  print("📄 Распознанный текст:\n")

  print(text)

  print("\n🔍 Извлечённые данные:")

  for k, v in key_data.items():

    print(f"{k}: {v}")


if __name__ == "__main__":

  file_path = input("Введите путь к фото документа: ").strip()

  analyze_document(file_path)

Report Page