pcacc пре 5 месеци
родитељ
комит
a88bdfe7a7
6 измењених фајлова са 62 додато и 14 уклоњено
  1. 3 3
      app_dongri.py
  2. 1 0
      dongri_pic.py
  3. 24 2
      dongri_task.py
  4. 3 1
      requirements.txt
  5. 18 0
      scriptBase/comon.py
  6. 13 8
      scriptBase/ocr.py

+ 3 - 3
app_dongri.py

@@ -197,10 +197,10 @@ def add_auto_task(isMaxCollect, isJina, isSimple = False, isAddStrengh = False,
                 task_queue.appendleft(task_fightMonster(isAddStrengh, True, isSimple))
         task_queue.appendleft(task_cure())
         task_queue.appendleft(task_checkStoreRoom())
-        task_queue.appendleft(task_collect(collectArr, isSimple))
+        task_queue.appendleft(task_collect(collectArr, isSimple, isAddStrengh))
         task_queue.appendleft(task_train(False))
         if not isAddStrengh: # 如果不是添加体力,则添加一次采集
-            task_queue.appendleft(task_collect(collectArr, isSimple))
+            task_queue.appendleft(task_collect(collectArr, isSimple, isAddStrengh))
         
 
         task_queue.appendleft(task_cure())
@@ -210,7 +210,7 @@ def add_auto_task(isMaxCollect, isJina, isSimple = False, isAddStrengh = False,
             if isJina == 'monster':
                 task_queue.appendleft(task_fightMonster(isAddStrengh, False, isSimple))
             else:
-                task_queue.appendleft(task_collect(collectArr, isSimple))
+                task_queue.appendleft(task_collect(collectArr, isSimple, isAddStrengh))
         
 
         #task_queue.appendleft(task_waitTime())

+ 1 - 0
dongri_pic.py

@@ -113,6 +113,7 @@ class check_img:
     yongbing = R'dongri_img\check\yongbing.png'
     detect = R'dongri_img\check\detect.png'
     yongbing_fight = R'dongri_img\check\yongbing_fight.png'
+    line_orc = (193,159,250,180)
 
 
 class information_img:

+ 24 - 2
dongri_task.py

@@ -141,6 +141,21 @@ class basic_operate:
         if waitClickImg_noWait_withBool(information_img.add_strength, 2, 1) == False:
             return False
         return True
+
+    @staticmethod
+    def get_line_num():
+        lineStr = yys_ocrAuto(check_img.line_orc)
+        if len(lineStr) == 0:
+            return 0
+        match = re.search(r'\d', lineStr[0])  # 查找第一个数字
+        if match:
+            first_digit = match.group()
+            print("第一个数字:", first_digit)
+            return int(first_digit)
+        else:
+            print("未找到数字")
+            return 0
+
         
         
 
@@ -361,8 +376,9 @@ class task_fightMonster(dongri_task):
         
 
 class task_collect(dongri_task):
-    def __init__(self, type = 0, isSimple = False):
+    def __init__(self, type = 0, isSimple = False, isAddStrenghth = False):
         self.isSimple = isSimple
+        self.isAddStrenghth = isAddStrenghth
         if isinstance(type, (list, tuple)):
             typeArr = type
             type = typeArr[random.randint(0, len(typeArr) - 1)]
@@ -399,6 +415,10 @@ class task_collect(dongri_task):
         if False == basic_operate.click_outside_search():
             return False
         
+        if self.isAddStrenghth and basic_operate.get_line_num() >= 5:
+            return False
+            
+        
         if waitFindImg_withBool(monster_img.search, 2, 1):
             myTimeSleep_big()
             yys_dragAuto(monster_img.move_right)
@@ -753,12 +773,14 @@ class task_activity_lianmeng(dongri_task):
 
 
 if __name__ == '__main__':
+    basic_operate.get_line_num()
+    #yys_ocrAuto(check_img.line_orc)
     #basic_operate.go_town()
     #basic_operate.add_strength()
     #task_fightMonster(False, True).run()
     #task_checkHelp().run()
     #task_checkStoreRoom().run()
-    task_activity_lianmeng().run()
+    #task_activity_lianmeng().run()
     #task_fight_yongbing(True).run()
     #task_collect([4,3,2,1]).run()
     #task_train().run()

+ 3 - 1
requirements.txt

@@ -17,4 +17,6 @@ pytesseract
 flask
 flask_socketio
 eventlet
-simple-websocket
+simple-websocket
+paddleocr
+paddlepaddle

+ 18 - 0
scriptBase/comon.py

@@ -8,6 +8,7 @@ import re
 from PIL import Image
 from PIL import ImageFilter
 import io
+from scriptBase.ocr import *
 
 def compress_image(image, target_size = 100 * 1024):
     # 调整图像尺寸,保持纵横比
@@ -267,6 +268,23 @@ def dragAuto(gamestr, positions):
     pcacc_mouse.drag_from(x1, y1, x2, y2)
     return True
 
+def ocrAuto(gamestr, positions):
+    tmpRet, tmpPos = find_window_pos(gamestr)
+    if tmpRet == False:
+        return []
+    
+    x1 = positions[0] + tmpPos[0]
+    y1 = positions[1] + tmpPos[1]
+    x2 = positions[2] + tmpPos[0]
+    y2 = positions[3] + tmpPos[1]
+    region = (x1, y1, x2, y2)
+    lineStr = capture_and_ocr(region)
+    print("识别到:", lineStr)
+    return lineStr
+
+def yys_ocrAuto(positions):
+    return ocrAuto('Mumu模拟器12', positions)
+
 def yys_dragAuto(positions):
     return dragAuto('Mumu模拟器12', positions)
 

+ 13 - 8
scriptBase/ocr.py

@@ -1,16 +1,21 @@
-import pytesseract
+from paddleocr import PaddleOCR
 from PIL import Image, ImageGrab
-import tkinter as tk
-import threading
-print(pytesseract.pytesseract.tesseract_cmd)
+import paddle
+import paddleocr
+import numpy as np
 
+print(paddle.__version__)  # 打印 PaddlePaddle 版本
+print(paddleocr.__version__)  # 打印 PaddleOCR 版本
 
 # 定义截图和OCR识别函数
 def capture_and_ocr(region):
     # 读取屏幕截图
     screenshot = ImageGrab.grab(bbox=region)
-    
-    # 使用Tesseract进行文字识别
-    result = pytesseract.image_to_string(screenshot, lang='chi_sim')
-    return result
+    # 将 PIL.Image 转换为 numpy 数组
+    screenshot_np = np.array(screenshot)
+
+    ocr = PaddleOCR(use_angle_cls=True)  # 支持中文
+    result = ocr.ocr(screenshot_np, cls=True)
+    final_texts = [line[1][0] for line in result[0]]  # 提取每个识别结果的文本部分
+    return final_texts