增强版v2-初始化仓库,验证好了ocr部分,先备份一次
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
"""
|
||||
OCR订单处理系统 - 服务模块
|
||||
-----------------------
|
||||
提供业务逻辑服务,协调各个核心组件完成业务功能。
|
||||
"""
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,88 @@
|
||||
"""
|
||||
OCR服务模块
|
||||
---------
|
||||
提供OCR识别服务,协调OCR流程。
|
||||
"""
|
||||
|
||||
from typing import Dict, List, Optional, Tuple, Union, Any
|
||||
|
||||
from ..config.settings import ConfigManager
|
||||
from ..core.utils.log_utils import get_logger
|
||||
from ..core.ocr.table_ocr import OCRProcessor
|
||||
|
||||
logger = get_logger(__name__)
|
||||
|
||||
class OCRService:
|
||||
"""
|
||||
OCR识别服务:协调OCR流程
|
||||
"""
|
||||
|
||||
def __init__(self, config: Optional[ConfigManager] = None):
|
||||
"""
|
||||
初始化OCR服务
|
||||
|
||||
Args:
|
||||
config: 配置管理器,如果为None则创建新的
|
||||
"""
|
||||
logger.info("初始化OCRService")
|
||||
self.config = config or ConfigManager()
|
||||
|
||||
# 创建OCR处理器
|
||||
self.ocr_processor = OCRProcessor(self.config)
|
||||
|
||||
logger.info("OCRService初始化完成")
|
||||
|
||||
def get_unprocessed_images(self) -> List[str]:
|
||||
"""
|
||||
获取待处理的图片列表
|
||||
|
||||
Returns:
|
||||
待处理图片路径列表
|
||||
"""
|
||||
return self.ocr_processor.get_unprocessed_images()
|
||||
|
||||
def process_image(self, image_path: str) -> Optional[str]:
|
||||
"""
|
||||
处理单张图片
|
||||
|
||||
Args:
|
||||
image_path: 图片路径
|
||||
|
||||
Returns:
|
||||
输出Excel文件路径,如果处理失败则返回None
|
||||
"""
|
||||
logger.info(f"OCRService开始处理图片: {image_path}")
|
||||
result = self.ocr_processor.process_image(image_path)
|
||||
|
||||
if result:
|
||||
logger.info(f"OCRService处理图片成功: {image_path} -> {result}")
|
||||
else:
|
||||
logger.error(f"OCRService处理图片失败: {image_path}")
|
||||
|
||||
return result
|
||||
|
||||
def process_images_batch(self, batch_size: int = None, max_workers: int = None) -> Tuple[int, int]:
|
||||
"""
|
||||
批量处理图片
|
||||
|
||||
Args:
|
||||
batch_size: 批处理大小
|
||||
max_workers: 最大线程数
|
||||
|
||||
Returns:
|
||||
(总处理数, 成功处理数)元组
|
||||
"""
|
||||
logger.info(f"OCRService开始批量处理图片, batch_size={batch_size}, max_workers={max_workers}")
|
||||
return self.ocr_processor.process_images_batch(batch_size, max_workers)
|
||||
|
||||
def validate_image(self, image_path: str) -> bool:
|
||||
"""
|
||||
验证图片是否有效
|
||||
|
||||
Args:
|
||||
image_path: 图片路径
|
||||
|
||||
Returns:
|
||||
图片是否有效
|
||||
"""
|
||||
return self.ocr_processor.validate_image(image_path)
|
||||
@@ -0,0 +1,87 @@
|
||||
"""
|
||||
订单服务模块
|
||||
---------
|
||||
提供订单处理服务,协调Excel处理和订单合并流程。
|
||||
"""
|
||||
|
||||
from typing import Dict, List, Optional, Tuple, Union, Any
|
||||
|
||||
from ..config.settings import ConfigManager
|
||||
from ..core.utils.log_utils import get_logger
|
||||
from ..core.excel.processor import ExcelProcessor
|
||||
from ..core.excel.merger import PurchaseOrderMerger
|
||||
|
||||
logger = get_logger(__name__)
|
||||
|
||||
class OrderService:
|
||||
"""
|
||||
订单服务:协调Excel处理和订单合并流程
|
||||
"""
|
||||
|
||||
def __init__(self, config: Optional[ConfigManager] = None):
|
||||
"""
|
||||
初始化订单服务
|
||||
|
||||
Args:
|
||||
config: 配置管理器,如果为None则创建新的
|
||||
"""
|
||||
logger.info("初始化OrderService")
|
||||
self.config = config or ConfigManager()
|
||||
|
||||
# 创建Excel处理器和采购单合并器
|
||||
self.excel_processor = ExcelProcessor(self.config)
|
||||
self.order_merger = PurchaseOrderMerger(self.config)
|
||||
|
||||
logger.info("OrderService初始化完成")
|
||||
|
||||
def get_latest_excel(self) -> Optional[str]:
|
||||
"""
|
||||
获取最新的Excel文件
|
||||
|
||||
Returns:
|
||||
最新Excel文件路径,如果未找到则返回None
|
||||
"""
|
||||
return self.excel_processor.get_latest_excel()
|
||||
|
||||
def process_excel(self, file_path: Optional[str] = None) -> Optional[str]:
|
||||
"""
|
||||
处理Excel文件,生成采购单
|
||||
|
||||
Args:
|
||||
file_path: Excel文件路径,如果为None则处理最新的文件
|
||||
|
||||
Returns:
|
||||
输出采购单文件路径,如果处理失败则返回None
|
||||
"""
|
||||
if file_path:
|
||||
logger.info(f"OrderService开始处理指定Excel文件: {file_path}")
|
||||
return self.excel_processor.process_specific_file(file_path)
|
||||
else:
|
||||
logger.info("OrderService开始处理最新Excel文件")
|
||||
return self.excel_processor.process_latest_file()
|
||||
|
||||
def get_purchase_orders(self) -> List[str]:
|
||||
"""
|
||||
获取采购单文件列表
|
||||
|
||||
Returns:
|
||||
采购单文件路径列表
|
||||
"""
|
||||
return self.order_merger.get_purchase_orders()
|
||||
|
||||
def merge_orders(self, file_paths: Optional[List[str]] = None) -> Optional[str]:
|
||||
"""
|
||||
合并采购单
|
||||
|
||||
Args:
|
||||
file_paths: 采购单文件路径列表,如果为None则处理所有采购单
|
||||
|
||||
Returns:
|
||||
合并后的采购单文件路径,如果合并失败则返回None
|
||||
"""
|
||||
if file_paths:
|
||||
logger.info(f"OrderService开始合并指定采购单: {file_paths}")
|
||||
else:
|
||||
logger.info("OrderService开始合并所有采购单")
|
||||
|
||||
return self.order_merger.process(file_paths)
|
||||
Reference in New Issue
Block a user