[Feat] Support Qianfan PP-StructureV3 MCP server (#17329)

* Support Qianfan PP-StructureV3 MCP server

* Bump version to 0.4.1
This commit is contained in:
Lin Manhui
2025-12-16 10:41:38 +08:00
committed by GitHub
parent 7ec94e7b46
commit da4639650e
5 changed files with 11 additions and 8 deletions
+1 -1
View File
@@ -292,7 +292,7 @@ Configuration example:
**Note**:
- The Qianfan platform service currently only supports PaddleOCR-VL.
- `PADDLEOCR_MCP_PIPELINE` should be set to the pipeline name. See Section 4 for more details. The Qianfan platform service currently only supports PaddleOCR-VL and PP-StructureV3.
#### Mode 4: Self-hosted Service
+1 -1
View File
@@ -285,7 +285,7 @@ paddleocr_mcp --help
**说明**
- 千帆平台服务目前仅支持 PaddleOCR-VL。
- `PADDLEOCR_MCP_PIPELINE` 需要被设置为产线名称。详见第 4 节。千帆平台服务目前仅支持 PaddleOCR-VL 和 PP-StructureV3
#### 模式四:自托管服务
+1 -1
View File
@@ -137,7 +137,7 @@ def _validate_args(args: argparse.Namespace) -> None:
file=sys.stderr,
)
sys.exit(2)
if args.pipeline not in ("PaddleOCR-VL",):
if args.pipeline not in ("PaddleOCR-VL", "PP-StructureV3"):
print(
f"{repr(args.pipeline)} is currently not supported when using the {repr(args.ppocr_source)} source.",
file=sys.stderr,
+7 -4
View File
@@ -664,7 +664,7 @@ class OCRHandler(SimpleInferencePipelineHandler):
class _LayoutParsingHandler(SimpleInferencePipelineHandler):
def _get_service_endpoint(self) -> str:
return "layout-parsing"
return "layout-parsing" if self._ppocr_source != "qianfan" else "paddleocr"
def _transform_local_kwargs(self, kwargs: Dict[str, Any]) -> Dict[str, Any]:
return {
@@ -878,6 +878,12 @@ class PPStructureV3Handler(_LayoutParsingHandler):
device=self._device,
)
def _transform_service_kwargs(self, kwargs: Dict[str, Any]) -> Dict[str, Any]:
kwargs = super()._transform_service_kwargs(kwargs)
if self._ppocr_source == "qianfan":
kwargs["model"] = "pp-structurev3"
return kwargs
class PaddleOCRVLHandler(_LayoutParsingHandler):
def register_tools(self, mcp: FastMCP) -> None:
@@ -917,9 +923,6 @@ class PaddleOCRVLHandler(_LayoutParsingHandler):
device=self._device,
)
def _get_service_endpoint(self) -> str:
return "layout-parsing" if self._ppocr_source != "qianfan" else "paddleocr"
def _transform_service_kwargs(self, kwargs: Dict[str, Any]) -> Dict[str, Any]:
kwargs = super()._transform_service_kwargs(kwargs)
if self._ppocr_source == "qianfan":
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "paddleocr_mcp"
version = "0.4.0"
version = "0.4.1"
requires-python = ">=3.10"
dependencies = [
"mcp>=1.5.0",