提交 81bac7cf authored 作者: 贺阳's avatar 贺阳

兼容测试环境

上级 5d87cc51
......@@ -403,11 +403,20 @@ class BatchGetPodInfoWizard(models.TransientModel):
"""
import os
import fitz # PyMuPDF
import cv2
import numpy as np
from PIL import Image
import pytesseract
# 尝试导入OpenCV,如果失败则使用PIL替代
try:
import cv2
cv2_available = True
_logger.info("OpenCV可用,使用OpenCV进行图像处理")
except ImportError as e:
cv2_available = False
_logger.warning(f"OpenCV不可用,使用PIL替代: {str(e)}")
_logger.warning("建议安装OpenCV: pip install opencv-python-headless")
# 设置Tesseract路径
self._setup_tesseract_path()
......@@ -435,12 +444,17 @@ class BatchGetPodInfoWizard(models.TransientModel):
pix = page.get_pixmap(matrix=mat)
img_data = pix.tobytes("png")
# 转换为OpenCV格式
nparr = np.frombuffer(img_data, np.uint8)
img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
# 转换为PIL图像
pil_img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
# 转换为PIL图像(兼容OpenCV和PIL)
if cv2_available:
# 使用OpenCV处理
nparr = np.frombuffer(img_data, np.uint8)
img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
pil_img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
else:
# 直接使用PIL处理
pil_img = Image.open(io.BytesIO(img_data))
if pil_img.mode != 'RGB':
pil_img = pil_img.convert('RGB')
# OCR配置(与HTML完全一致)
config = '--psm 6 --oem 1 -c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,- -c preserve_interword_spaces=1 -c tessedit_do_invert=0 -c textord_min_linesize=1.0 -c classify_bln_numeric_mode=0 -c textord_force_make_prop_words=F -c textord_min_xheight=8 -c textord_tabfind_show_vlines=0'
......
pygtrans
PyMuPDF
opencv-python
numpy
Pillow
tesseract
pytesseract
# # 更新包列表
# sudo apt update
# # 安装Tesseract OCR
# sudo apt install tesseract-ocr
# # 安装英语语言包
# sudo apt install tesseract-ocr-eng
# apt install libopencv-dev python3-opencv
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论