调用MCP工具
(request: MCPRequest)
| 119 | |
| 120 | @self.router.post("/call") |
| 121 | async def call_tool(request: MCPRequest): |
| 122 | """调用MCP工具""" |
| 123 | try: |
| 124 | method = request.method |
| 125 | params = request.params |
| 126 | |
| 127 | if method == "ddddocr_initialize": |
| 128 | from .models import InitializeRequest |
| 129 | init_request = InitializeRequest(**params) |
| 130 | result = self.service.initialize(init_request) |
| 131 | |
| 132 | elif method == "ddddocr_ocr": |
| 133 | from .models import OCRRequest |
| 134 | ocr_request = OCRRequest(**params) |
| 135 | |
| 136 | if not self.service.ocr_instance: |
| 137 | raise HTTPException(status_code=400, detail="OCR功能未初始化") |
| 138 | |
| 139 | # 解码base64图片 |
| 140 | image_data = base64.b64decode(ocr_request.image) |
| 141 | |
| 142 | # 设置字符集范围 |
| 143 | if ocr_request.charset_range is not None: |
| 144 | self.service.ocr_instance.set_ranges(ocr_request.charset_range) |
| 145 | |
| 146 | # 执行OCR识别 |
| 147 | result = self.service.ocr_instance.classification( |
| 148 | image_data, |
| 149 | png_fix=ocr_request.png_fix, |
| 150 | probability=ocr_request.probability, |
| 151 | color_filter_colors=ocr_request.color_filter_colors, |
| 152 | color_filter_custom_ranges=ocr_request.color_filter_custom_ranges |
| 153 | ) |
| 154 | |
| 155 | elif method == "ddddocr_detection": |
| 156 | from .models import DetectionRequest |
| 157 | det_request = DetectionRequest(**params) |
| 158 | |
| 159 | if not self.service.det_instance: |
| 160 | raise HTTPException(status_code=400, detail="目标检测功能未初始化") |
| 161 | |
| 162 | # 解码base64图片 |
| 163 | image_data = base64.b64decode(det_request.image) |
| 164 | |
| 165 | # 执行目标检测 |
| 166 | result = self.service.det_instance.detection(image_data) |
| 167 | |
| 168 | elif method == "ddddocr_slide_match": |
| 169 | from .models import SlideMatchRequest |
| 170 | slide_request = SlideMatchRequest(**params) |
| 171 | |
| 172 | if not self.service.slide_instance: |
| 173 | raise HTTPException(status_code=500, detail="滑块功能未初始化") |
| 174 | |
| 175 | # 解码base64图片 |
| 176 | target_data = base64.b64decode(slide_request.target_image) |
| 177 | background_data = base64.b64decode(slide_request.background_image) |
| 178 |
nothing calls this directly
no test coverage detected