1
0
forked from BRT/arc
arc/android/ocr/OcrUtils.h

33 lines
1.7 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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