vovohong commited on
Commit
80d4eeb
·
1 Parent(s): fda3e13

fix: 固定 paddleocr<3.0 和 transformers<4.54 避免 API 不兼容

Browse files
Files changed (2) hide show
  1. requirements.txt +2 -2
  2. util/utils.py +10 -26
requirements.txt CHANGED
@@ -6,8 +6,8 @@ supervision==0.18.0
6
  numpy==1.26.4
7
  opencv-python-headless
8
  easyocr
9
- paddlepaddle
10
- paddleocr>=2.7.0
11
  gradio==5.6.0
12
  pydantic==2.10.6
13
  accelerate
 
6
  numpy==1.26.4
7
  opencv-python-headless
8
  easyocr
9
+ paddlepaddle>=2.5.0,<3.0.0
10
+ paddleocr>=2.7.0,<3.0.0
11
  gradio==5.6.0
12
  pydantic==2.10.6
13
  accelerate
util/utils.py CHANGED
@@ -20,32 +20,14 @@ from matplotlib import pyplot as plt
20
  import easyocr
21
  from paddleocr import PaddleOCR
22
  reader = easyocr.Reader(['en'])
23
- # PaddleOCR 初始化:兼容新旧版本(逐步降级)
24
- def _init_paddle_ocr():
25
- """尝试不同参数组合初始化 PaddleOCR,兼容 2.7~3.x 各版本"""
26
- # 方案1: 旧版完整参数
27
- configs = [
28
- dict(lang='en', use_angle_cls=False, use_gpu=False, show_log=False,
29
- max_batch_size=1024, use_dilation=True, det_db_score_mode='slow', rec_batch_num=1024),
30
- # 方案2: 移除最新版不支持的参数
31
- dict(lang='en', use_angle_cls=False, use_gpu=False, show_log=False),
32
- # 方案3: 只用最基础的参数
33
- dict(lang='en', use_angle_cls=False, use_gpu=False),
34
- # 方案4: 最小化
35
- dict(lang='en'),
36
- ]
37
- for i, cfg in enumerate(configs):
38
- try:
39
- ocr = PaddleOCR(**cfg)
40
- if i > 0:
41
- print(f"⚠️ PaddleOCR 使用方案{i+1}初始化成功(部分旧参数不兼容)", flush=True)
42
- return ocr
43
- except (ValueError, TypeError) as e:
44
- print(f"⚠️ PaddleOCR 方案{i+1}失败: {e}", flush=True)
45
- continue
46
- raise RuntimeError("PaddleOCR 所有初始化方案均失败")
47
-
48
- paddle_ocr = _init_paddle_ocr()
49
  import time
50
  import base64
51
 
@@ -533,6 +515,8 @@ def check_ocr_box(image_source: Union[str, Image.Image], display_img = True, out
533
  else:
534
  text_threshold = easyocr_args['text_threshold']
535
  result = paddle_ocr.ocr(image_np, cls=False)[0]
 
 
536
  coord = [item[0] for item in result if item[1][1] > text_threshold]
537
  text = [item[1][0] for item in result if item[1][1] > text_threshold]
538
  else: # EasyOCR
 
20
  import easyocr
21
  from paddleocr import PaddleOCR
22
  reader = easyocr.Reader(['en'])
23
+ paddle_ocr = PaddleOCR(
24
+ lang='en',
25
+ use_angle_cls=False,
26
+ use_gpu=False,
27
+ show_log=False,
28
+ use_dilation=True,
29
+ det_db_score_mode='slow',
30
+ rec_batch_num=1024)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  import time
32
  import base64
33
 
 
515
  else:
516
  text_threshold = easyocr_args['text_threshold']
517
  result = paddle_ocr.ocr(image_np, cls=False)[0]
518
+ if result is None:
519
+ result = []
520
  coord = [item[0] for item in result if item[1][1] > text_threshold]
521
  text = [item[1][0] for item in result if item[1][1] > text_threshold]
522
  else: # EasyOCR