Распознавание текста с документов
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)