e904b667c6
Build/Publish Develop Docs / deploy (push) Failing after 1s
PaddleOCR Code Style Check / check-code-style (push) Failing after 1s
PaddleOCR PR Tests GPU / detect-changes (push) Failing after 1s
PaddleOCR PR Tests / detect-changes (push) Failing after 1s
PaddleOCR PR Tests GPU / test-pr-gpu (push) Has been cancelled
PaddleOCR PR Tests / test-pr (push) Has been cancelled
PaddleOCR PR Tests GPU / test-pr-gpu-impl (push) Has been cancelled
PaddleOCR PR Tests / test-pr-python (3.13) (push) Has been cancelled
PaddleOCR PR Tests / test-pr-python (3.8) (push) Has been cancelled
PaddleOCR PR Tests / test-pr-python (3.9) (push) Has been cancelled
160 lines
8.6 KiB
Go
160 lines
8.6 KiB
Go
// Copyright (c) 2026 PaddlePaddle Authors. All Rights Reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package paddleocr
|
|
|
|
const (
|
|
PPOCRv5 = "PP-OCRv5"
|
|
PPOCRv5Latin = "PP-OCRv5-latin"
|
|
PPOCRv6 = "PP-OCRv6"
|
|
PPStructureV3 = "PP-StructureV3"
|
|
PaddleOCRVL = "PaddleOCR-VL"
|
|
PaddleOCRVL15 = "PaddleOCR-VL-1.5"
|
|
PaddleOCRVL16 = "PaddleOCR-VL-1.6"
|
|
)
|
|
|
|
// IsOCRModel reports whether model is supported by OCR APIs.
|
|
func IsOCRModel(model string) bool {
|
|
return model == PPOCRv5 || model == PPOCRv5Latin || model == PPOCRv6
|
|
}
|
|
|
|
// IsDocumentParsingModel reports whether model is supported by document parsing APIs.
|
|
func IsDocumentParsingModel(model string) bool {
|
|
switch model {
|
|
case PPStructureV3, PaddleOCRVL, PaddleOCRVL15, PaddleOCRVL16:
|
|
return true
|
|
default:
|
|
return false
|
|
}
|
|
}
|
|
|
|
// IsVLModel reports whether model is a PaddleOCR-VL family model.
|
|
func IsVLModel(model string) bool {
|
|
switch model {
|
|
case PaddleOCRVL, PaddleOCRVL15, PaddleOCRVL16:
|
|
return true
|
|
default:
|
|
return false
|
|
}
|
|
}
|
|
|
|
type OCROptions struct {
|
|
UseDocOrientationClassify *bool `json:"useDocOrientationClassify,omitempty"`
|
|
UseDocUnwarping *bool `json:"useDocUnwarping,omitempty"`
|
|
UseTextlineOrientation *bool `json:"useTextlineOrientation,omitempty"`
|
|
TextDetLimitSideLen *int `json:"textDetLimitSideLen,omitempty"`
|
|
TextDetLimitType *string `json:"textDetLimitType,omitempty"`
|
|
TextDetThresh *float64 `json:"textDetThresh,omitempty"`
|
|
TextDetBoxThresh *float64 `json:"textDetBoxThresh,omitempty"`
|
|
TextDetUnclipRatio *float64 `json:"textDetUnclipRatio,omitempty"`
|
|
TextRecScoreThresh *float64 `json:"textRecScoreThresh,omitempty"`
|
|
Visualize *bool `json:"visualize,omitempty"`
|
|
ExtraOptions map[string]interface{} `json:"-"`
|
|
}
|
|
|
|
type PPStructureV3Options struct {
|
|
UseDocOrientationClassify *bool `json:"useDocOrientationClassify,omitempty"`
|
|
UseDocUnwarping *bool `json:"useDocUnwarping,omitempty"`
|
|
UseTextlineOrientation *bool `json:"useTextlineOrientation,omitempty"`
|
|
UseSealRecognition *bool `json:"useSealRecognition,omitempty"`
|
|
UseTableRecognition *bool `json:"useTableRecognition,omitempty"`
|
|
UseFormulaRecognition *bool `json:"useFormulaRecognition,omitempty"`
|
|
UseChartRecognition *bool `json:"useChartRecognition,omitempty"`
|
|
UseRegionDetection *bool `json:"useRegionDetection,omitempty"`
|
|
LayoutThreshold interface{} `json:"layoutThreshold,omitempty"`
|
|
LayoutNms *bool `json:"layoutNms,omitempty"`
|
|
LayoutUnclipRatio interface{} `json:"layoutUnclipRatio,omitempty"`
|
|
LayoutMergeBboxesMode interface{} `json:"layoutMergeBboxesMode,omitempty"`
|
|
FormatBlockContent *bool `json:"formatBlockContent,omitempty"`
|
|
TextDetLimitSideLen *int `json:"textDetLimitSideLen,omitempty"`
|
|
TextDetLimitType *string `json:"textDetLimitType,omitempty"`
|
|
TextDetThresh *float64 `json:"textDetThresh,omitempty"`
|
|
TextDetBoxThresh *float64 `json:"textDetBoxThresh,omitempty"`
|
|
TextDetUnclipRatio *float64 `json:"textDetUnclipRatio,omitempty"`
|
|
TextRecScoreThresh *float64 `json:"textRecScoreThresh,omitempty"`
|
|
UseWiredTableCellsTransToHtml *bool `json:"useWiredTableCellsTransToHtml,omitempty"`
|
|
UseWirelessTableCellsTransToHtml *bool `json:"useWirelessTableCellsTransToHtml,omitempty"`
|
|
UseTableOrientationClassify *bool `json:"useTableOrientationClassify,omitempty"`
|
|
UseOcrResultsWithTableCells *bool `json:"useOcrResultsWithTableCells,omitempty"`
|
|
UseE2eWiredTableRecModel *bool `json:"useE2eWiredTableRecModel,omitempty"`
|
|
UseE2eWirelessTableRecModel *bool `json:"useE2eWirelessTableRecModel,omitempty"`
|
|
MarkdownIgnoreLabels []string `json:"markdownIgnoreLabels,omitempty"`
|
|
PrettifyMarkdown *bool `json:"prettifyMarkdown,omitempty"`
|
|
ShowFormulaNumber *bool `json:"showFormulaNumber,omitempty"`
|
|
ReturnMarkdownImages *bool `json:"returnMarkdownImages,omitempty"`
|
|
OutputFormats []string `json:"outputFormats,omitempty"`
|
|
Visualize *bool `json:"visualize,omitempty"`
|
|
ExtraOptions map[string]interface{} `json:"-"`
|
|
}
|
|
|
|
type PaddleOCRVLOptions struct {
|
|
UseDocOrientationClassify *bool `json:"useDocOrientationClassify,omitempty"`
|
|
UseDocUnwarping *bool `json:"useDocUnwarping,omitempty"`
|
|
UseLayoutDetection *bool `json:"useLayoutDetection,omitempty"`
|
|
UseChartRecognition *bool `json:"useChartRecognition,omitempty"`
|
|
UseSealRecognition *bool `json:"useSealRecognition,omitempty"`
|
|
UseOcrForImageBlock *bool `json:"useOcrForImageBlock,omitempty"`
|
|
LayoutThreshold interface{} `json:"layoutThreshold,omitempty"`
|
|
LayoutNms *bool `json:"layoutNms,omitempty"`
|
|
LayoutUnclipRatio interface{} `json:"layoutUnclipRatio,omitempty"`
|
|
LayoutMergeBboxesMode interface{} `json:"layoutMergeBboxesMode,omitempty"`
|
|
LayoutShapeMode *string `json:"layoutShapeMode,omitempty"`
|
|
PromptLabel *string `json:"promptLabel,omitempty"`
|
|
FormatBlockContent *bool `json:"formatBlockContent,omitempty"`
|
|
RepetitionPenalty *float64 `json:"repetitionPenalty,omitempty"`
|
|
Temperature *float64 `json:"temperature,omitempty"`
|
|
TopP *float64 `json:"topP,omitempty"`
|
|
MinPixels *int `json:"minPixels,omitempty"`
|
|
MaxPixels *int `json:"maxPixels,omitempty"`
|
|
MaxNewTokens *int `json:"maxNewTokens,omitempty"`
|
|
VlmExtraArgs map[string]interface{} `json:"vlmExtraArgs,omitempty"`
|
|
MergeLayoutBlocks *bool `json:"mergeLayoutBlocks,omitempty"`
|
|
MarkdownIgnoreLabels []string `json:"markdownIgnoreLabels,omitempty"`
|
|
PrettifyMarkdown *bool `json:"prettifyMarkdown,omitempty"`
|
|
ShowFormulaNumber *bool `json:"showFormulaNumber,omitempty"`
|
|
RestructurePages *bool `json:"restructurePages,omitempty"`
|
|
MergeTables *bool `json:"mergeTables,omitempty"`
|
|
RelevelTitles *bool `json:"relevelTitles,omitempty"`
|
|
ReturnMarkdownImages *bool `json:"returnMarkdownImages,omitempty"`
|
|
OutputFormats []string `json:"outputFormats,omitempty"`
|
|
Visualize *bool `json:"visualize,omitempty"`
|
|
ExtraOptions map[string]interface{} `json:"-"`
|
|
}
|
|
|
|
// DocParsingOptionsProvider marks document parsing option structs.
|
|
type DocParsingOptionsProvider interface {
|
|
isDocParsingOptions()
|
|
}
|
|
|
|
func (*PPStructureV3Options) isDocParsingOptions() {}
|
|
func (*PaddleOCRVLOptions) isDocParsingOptions() {}
|
|
|
|
type OCRRequest struct {
|
|
Model string
|
|
FileURL string
|
|
FilePath string
|
|
PageRanges string
|
|
BatchID string
|
|
Options *OCROptions
|
|
}
|
|
|
|
type DocParsingRequest struct {
|
|
Model string
|
|
FileURL string
|
|
FilePath string
|
|
PageRanges string
|
|
BatchID string
|
|
Options DocParsingOptionsProvider
|
|
}
|