Tencent/WeKnora · error
marshal payload: %w
Error message
marshal payload: %w
What it means
json.Marshal of the layout-parsing payload (base64 file, params) failed in callLayoutParsing — practically unreachable since the payload is a plain map of strings/numbers; indicates a corrupted parameter value.
Source
Thrown at internal/infrastructure/docparser/paddleocr_vl_converter.go:152
Markdown struct {
Text string `json:"text"`
Images map[string]string `json:"images"`
} `json:"markdown"`
} `json:"layoutParsingResults"`
} `json:"result"`
}
func (c *PaddleOCRVLReader) callLayoutParsing(
ctx context.Context, req *types.ReadRequest, content []byte,
) (string, map[string]string, error) {
payload := paddleOCRVLRecognitionParams(c.useSeal, c.useChart)
payload["file"] = base64.StdEncoding.EncodeToString(content)
payload["fileType"] = fileTypeCode(req)
payload["visualize"] = false
body, err := json.Marshal(payload)
if err != nil {
return "", nil, fmt.Errorf("marshal payload: %w", err)
}
httpReq, err := http.NewRequestWithContext(
ctx, http.MethodPost, c.endpoint+"/layout-parsing", bytes.NewReader(body),
)
if err != nil {
return "", nil, fmt.Errorf("create request: %w", err)
}
httpReq.Header.Set("Content-Type", "application/json")
client := utils.NewSSRFSafeHTTPClient(utils.SSRFSafeHTTPClientConfig{
Timeout: paddleOCRVLTimeout,
MaxRedirects: 5,
})
resp, err := client.Do(httpReq)
if err != nil {
return "", nil, fmt.Errorf("HTTP request: %w", err)
}View on GitHub (pinned to 988cbb0330)
Solutions
- Check payload keys for non-serializable values
- Verify base64 content and fileType are plain strings
- Log the marshal error for the offending key
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at internal/infrastructure/docparser/paddleocr_vl_converter.go:152 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of Tencent/WeKnora@988cbb0330 (2026-09-02).
Data as JSON: /api/errors/6e0a079bb654e1a5.
Report an issue: GitHub.