diff --git a/CMakeLists.txt b/CMakeLists.txt index 8d4266a..3e7e9ee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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 diff --git a/android/ozon/GetLastTransactionsScript.cpp b/android/ozon/GetLastTransactionsScript.cpp index 73a11a4..7b80735 100644 --- a/android/ozon/GetLastTransactionsScript.cpp +++ b/android/ozon/GetLastTransactionsScript.cpp @@ -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;