- Add OCR-based fallback logic to extract bankTrExternalId in GetLastTransactionsScript when missing.
- Copy required images, trained data, and config files to the build directory during the CMake process.
This commit is contained in:
parent
74179cb3f1
commit
630724fc37
@ -221,6 +221,14 @@ elseif (APPLE)
|
||||
tesseract
|
||||
leptonica
|
||||
)
|
||||
|
||||
# Копирование изображений в директорию сборки
|
||||
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/tutorials" DESTINATION "${CMAKE_BINARY_DIR}")
|
||||
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/images" DESTINATION "${CMAKE_BINARY_DIR}")
|
||||
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/rus.traineddata" DESTINATION "${CMAKE_BINARY_DIR}")
|
||||
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/eng.traineddata" DESTINATION "${CMAKE_BINARY_DIR}")
|
||||
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/config.ini" DESTINATION "${CMAKE_BINARY_DIR}")
|
||||
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/no_devices.png" DESTINATION "${CMAKE_BINARY_DIR}")
|
||||
endif ()
|
||||
|
||||
target_include_directories(ARC PRIVATE
|
||||
|
||||
@ -401,6 +401,38 @@ void GetLastTransactionsScript::scanRecentTransactions(const DeviceInfo &device,
|
||||
tx.bankName = m_appCode;
|
||||
tx.bankTime = detail.bankTime;
|
||||
tx.bankTrExternalId = detail.bankTrExternalId;
|
||||
|
||||
// Если ID не найден в XML — пробуем через "Документы" + OCR
|
||||
if (tx.bankTrExternalId.isEmpty()) {
|
||||
Node docBtn = xmlScreenParser.findButtonNode("Документы", false);
|
||||
if (!docBtn.isEmpty()) {
|
||||
AdbUtils::makeTap(m_deviceId, docBtn.x(), docBtn.y());
|
||||
QThread::msleep(2000);
|
||||
bool docLoaded = false;
|
||||
for (int da = 0; da < 15; ++da) {
|
||||
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(m_deviceId, ++m_counter));
|
||||
if (!xmlScreenParser.findNodeByContentDesc("Поделиться").isEmpty()) {
|
||||
docLoaded = true;
|
||||
break;
|
||||
}
|
||||
QThread::msleep(1500);
|
||||
}
|
||||
if (docLoaded) {
|
||||
QThread::msleep(500);
|
||||
const QByteArray screenshot = AdbUtils::captureScreenshotBytes(m_deviceId);
|
||||
if (!screenshot.isEmpty()) {
|
||||
const QString ocrText = recognizeTextFromImage(screenshot);
|
||||
if (!ocrText.isEmpty()) {
|
||||
tx.bankTrExternalId = extractTransactionId(ocrText);
|
||||
qDebug() << "[GetLastTransactions] OCR extracted ID:" << tx.bankTrExternalId;
|
||||
}
|
||||
}
|
||||
}
|
||||
AdbUtils::goBack(m_deviceId);
|
||||
QThread::msleep(1000);
|
||||
}
|
||||
}
|
||||
|
||||
tx.status = TransactionStatus::Complete;
|
||||
tx.timestamp = DateUtils::getUtcNow();
|
||||
if (!detail.name.isEmpty()) tx.name = detail.name;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user