ocr_recognize
Extract text from local image files using PaddleOCR to convert visual content into machine-readable text with confidence scores and positional data.
Instructions
Recognize text from one local image path via PaddleOCR.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| image | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/local_ocr_mcp/server.py:39-42 (handler)The MCP tool definition and handler entry point for ocr_recognize.
@mcp.tool() async def ocr_recognize(image: dict[str, Any]) -> dict[str, Any]: """Recognize text from one local image path via PaddleOCR.""" return await asyncio.to_thread(recognition_service.recognize, image) - The core business logic that orchestrates image resolution, validation, and OCR engine invocation.
def recognize(self, image: dict[str, Any]) -> dict[str, Any]: """Handle one OCR request and return the public tool response.""" request = OCRRequest(image=image) resolved_engine = "paddleocr" resolved_path: str | None = None try: image_path = self._resolve_image_path(request.image) validated_path = validate_image(str(image_path)).resolve() resolved_path = str(validated_path) result = self._engine.recognize(validated_path) meta = self._build_meta( request_id=request.request_id, resolved_engine=resolved_engine, resolved_image_path=resolved_path, ) return self._build_success(data=result.to_dict(), meta=meta) except EngineNotAvailableError as exc: return self._build_error( code=exc.code, message=exc.message, retryable=exc.retryable, data=None, meta=self._build_meta( request_id=request.request_id, resolved_engine=resolved_engine, resolved_image_path=resolved_path, ), ) except FileNotFoundError as exc: return self._build_error( "file_not_found", str(exc), False, None, self._build_meta(request.request_id, resolved_engine, resolved_path), ) except InvalidImageRequestError as exc: return self._build_error( exc.code, exc.message, exc.retryable, None, self._build_meta(request.request_id, resolved_engine, resolved_path), ) except ValueError as exc: return self._build_error( "invalid_image", str(exc), False, None, self._build_meta(request.request_id, resolved_engine, resolved_path), ) except Exception as exc: self._logger.exception("OCR 请求处理失败") return self._build_error( "internal_error", str(exc), False, None, self._build_meta(request.request_id, resolved_engine, resolved_path), )