#pragma once #include #include #include namespace OcrUtils { // Находит надпись `needle` на скриншоте (PNG-байты) и возвращает координаты // центра bounding box-а в системе координат экрана. Если текст не найден — // возвращает QPoint(-1, -1). Совпадение нечувствительно к регистру и допускает // одну-две OCR-ошибки в букве (для "Подтверждаю" на оранжевом фоне это важно). // // `yMin`/`yMax` — необязательное окно по Y в координатах экрана. Если задано, // OCR гоняется только по этой полосе, что в 2-3 раза быстрее на 1080×2340. // 0/0 — обрабатывать всё изображение. QPoint findTextCenter(const QByteArray &png, const QString &needle, int yMin = 0, int yMax = 0); // Полнотекстовый OCR с грейскейл + 300 dpi (для парсинга реквизитов // транзакции). rus+eng по умолчанию. Пустая строка при ошибке. QString recognizeText(const QByteArray &pngData); // Извлекает ID транзакции из распознанного текста. // Поддерживает два формата Ozon: // "ID операции B6065130422112..." // "ID операции po-3140eb01-..." // "№ Ф-2026-25235663" QString extractTransactionId(const QString &ocrText); } // namespace OcrUtils