33 lines
1.7 KiB
C++
33 lines
1.7 KiB
C++
#pragma once
|
||
|
||
#include <QByteArray>
|
||
#include <QPoint>
|
||
#include <QString>
|
||
|
||
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
|