__init__.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. """
  2. 模型适配器模块
  3. 提供统一的接口适配不同的模型后端
  4. """
  5. from .base import (
  6. BaseAdapter,
  7. BasePreprocessor,
  8. BaseLayoutDetector,
  9. BaseVLRecognizer,
  10. BaseOCRRecognizer
  11. )
  12. from .paddle_layout_detector import PaddleLayoutDetector
  13. from .paddle_vl_adapter import PaddleVLRecognizer
  14. # 可选导入 MinerU 适配器
  15. try:
  16. from .mineru_adapter import (
  17. MinerUPreprocessor,
  18. MinerULayoutDetector,
  19. MinerUVLRecognizer,
  20. MinerUOCRRecognizer
  21. )
  22. MINERU_AVAILABLE = True
  23. except ImportError:
  24. MINERU_AVAILABLE = False
  25. __all__ = [
  26. # 基类
  27. 'BaseAdapter',
  28. 'BasePreprocessor',
  29. 'BaseLayoutDetector',
  30. 'BaseVLRecognizer',
  31. 'BaseOCRRecognizer',
  32. # PaddleX 适配器
  33. 'PaddleLayoutDetector',
  34. 'PaddleVLRecognizer',
  35. ]
  36. # 如果 MinerU 可用,添加到导出列表
  37. if MINERU_AVAILABLE:
  38. __all__.extend([
  39. 'MinerUPreprocessor',
  40. 'MinerULayoutDetector',
  41. 'MinerUVLRecognizer',
  42. 'MinerUOCRRecognizer',
  43. ])
  44. def get_layout_detector(config: dict):
  45. """
  46. 根据配置获取布局检测器
  47. Args:
  48. config: 配置字典,包含 module 和其他参数
  49. Returns:
  50. BaseLayoutDetector 实例
  51. """
  52. module = config.get('module', 'paddle')
  53. if module == 'paddle':
  54. return PaddleLayoutDetector(config)
  55. elif module == 'mineru':
  56. if not MINERU_AVAILABLE:
  57. raise ImportError("MinerU adapter not available")
  58. return MinerULayoutDetector(config)
  59. else:
  60. raise ValueError(f"Unknown layout detection module: {module}")
  61. def get_preprocessor(config: dict):
  62. """根据配置获取预处理器"""
  63. module = config.get('module', 'mineru')
  64. if module == 'mineru':
  65. if not MINERU_AVAILABLE:
  66. raise ImportError("MinerU adapter not available")
  67. return MinerUPreprocessor(config)
  68. else:
  69. raise ValueError(f"Unknown preprocessor module: {module}")
  70. def get_vl_recognizer(config: dict):
  71. """根据配置获取VL识别器"""
  72. module = config.get('module', 'mineru')
  73. if module == 'paddle':
  74. return PaddleVLRecognizer(config)
  75. elif module == 'mineru':
  76. if not MINERU_AVAILABLE:
  77. raise ImportError("MinerU adapter not available")
  78. return MinerUVLRecognizer(config)
  79. else:
  80. raise ValueError(f"Unknown VL recognizer module: {module}")
  81. def get_ocr_recognizer(config: dict):
  82. """根据配置获取OCR识别器"""
  83. module = config.get('module', 'mineru')
  84. if module == 'mineru':
  85. if not MINERU_AVAILABLE:
  86. raise ImportError("MinerU adapter not available")
  87. return MinerUOCRRecognizer(config)
  88. else:
  89. raise ValueError(f"Unknown OCR recognizer module: {module}")