#!/usr/bin/env python3
from pathlib import Path
import subprocess
import re

BASE = Path("/home/dayhanbiz/public_html/biblioteka/тестирование скриптов/Сортировка по шрифту")
SOURCE = Path("/home/dayhanbiz/public_html/japbak.men/История Туркестана/Библиотека/Необработанные поступления")
TARGET = BASE / "Отсортированные - Русский"
UNRECOGNIZED_TARGET = BASE / "Отсортированные - Русский не распознанный"
LOG_DIR = BASE / "Скрипты" / "Temporary process files"

TARGET.mkdir(parents=True, exist_ok=True)
UNRECOGNIZED_TARGET.mkdir(parents=True, exist_ok=True)
LOG_DIR.mkdir(parents=True, exist_ok=True)

# Все буквы современного русского алфавита
RUSSIAN_LETTERS = set('абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ')

def extract_page_7(pdf_path):
    try:
        temp_prefix = LOG_DIR / pdf_path.stem

        # Конвертируем только 7-ю страницу
        subprocess.run([
            'pdftoppm', '-png', '-r', '300', '-f', '7', '-l', '7',
            str(pdf_path), str(temp_prefix)
        ], check=True, timeout=120)

        page_file = temp_prefix.with_name(f"{pdf_path.stem}-7.png")
        if not page_file.exists():
            return "", None

        # Tesseract
        result = subprocess.run([
            'tesseract', str(page_file), 'stdout', '-l', 'rus', '--psm', '6'
        ], stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=300)

        text = result.stdout.decode('utf-8', errors='ignore')

        # Сохраняем лог
        log_file = LOG_DIR / f"{pdf_path.stem}_page7.txt"
        with open(log_file, "w", encoding="utf-8") as f:
            f.write(text)

        # Удаляем временное изображение
        if page_file.exists():
            page_file.unlink()

        return text, log_file

    except Exception as e:
        print(f"Ошибка: {pdf_path.name} → {e}")
        return "", None

print("=== Скрипт 7. Tesseract — только 7-я страница, >75% русских букв ===")
pdf_files = list(SOURCE.rglob("*.pdf"))
print(f"Найдено файлов: {len(pdf_files)}\n")

moved = 0
unrecognized = 0

for pdf in pdf_files:
    text, log_file = extract_page_7(pdf)
    
    if not text:
        print(f"   Не распознан (пустой текст): {pdf.name}")
        continue

    russian_count = sum(1 for c in text if c in RUSSIAN_LETTERS)
    total_letters = sum(1 for c in text if c.isalpha())
    
    if total_letters == 0:
        percent = 0
    else:
        percent = (russian_count / total_letters) * 100

    if percent > 75:
        try:
            pdf.rename(TARGET / pdf.name)
            print(f"→ Русский ({percent:.1f}% русских букв): {pdf.name}")
            moved += 1
            print(f"   Лог сохранён: {log_file.name}")
        except Exception as e:
            print(f"Ошибка перемещения {pdf.name}: {e}")
    else:
        try:
            pdf.rename(UNRECOGNIZED_TARGET / pdf.name)
            print(f"→ Русский не распознанный ({percent:.1f}% русских букв): {pdf.name}")
            unrecognized += 1
        except Exception as e:
            print(f"Ошибка перемещения {pdf.name}: {e}")

print(f"\n=== Завершено ===")
print(f"Перемещено в 'Русский': {moved} файлов")
print(f"Перемещено в 'Русский не распознанный': {unrecognized} файлов")
