Lin Manhui 3d03ca5500
[Breaking][Feat] New PaddleOCR inference package (#15046)
* Init new paddleocr

* Remove unused dependency

* Fix typos

* Fix

* Add doc understanding modules

* Fix package finding

* Normalize name

* Fix setting bugs

* Fix setting bug

* Support single model inference

* Add PP-ChatOCRv4-doc

* Add pp_chatocrv4_doc tests

* Enable MKL-DNN when available

* add seal_text_detection modules

* add layout_detection and table_cells_detection modules

* add testing scripts

* Fix desc

* add text_image_unwarping and table_structure_recognition modules

* add formula_recognition and doc_vlm modules

* update formula_recognition default_model_name

* add MKLDNN_BLOCKLIST

* update MKLDNN log

* add seal rec pipeline

* fix sth

* fix sth

* add doc preprocessor pipeline

* fix sth

* add doc understanding

* add table_rec_v2, ppstructurev3, formula_rec pipelines

* move test files

* forward kwargs to pipeline.predict

* clean test files

* Add missing kwargs

* Fix typo

* Fix typo

* rerun CI

* update mkldnn BLOCKLIST

* update

* update warning message

* fix cli args

* update PIPELINE_MKLDNN_BLOCKLIST

* update  of  workflow

* skip resource_intensive tests

* update config

* skip ppdocbee test_predict_params

---------

Co-authored-by: zhangyue66 <zhangyue66@baidu.com>
Co-authored-by: zhangzelun <zhangzelun@baidu.com>
2025-05-04 15:59:02 +08:00

99 lines
2.8 KiB
Python

# Copyright (c) 2025 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.
import argparse
import warnings
from ._models import (
DocImgOrientationClassification,
DocVLM,
FormulaRecognition,
LayoutDetection,
SealTextDetection,
TableCellsDetection,
TableClassification,
TableStructureRecognition,
TextDetection,
TextImageUnwarping,
TextLineOrientationClassification,
TextRecognition,
)
from ._pipelines import (
DocPreprocessor,
DocUnderstanding,
FormulaRecognitionPipeline,
PaddleOCR,
PPChatOCRv4Doc,
PPStructureV3,
SealRecognition,
TableRecognitionPipelineV2,
)
from ._version import version
from .utils.deprecation import CLIDeprecationWarning
def _register_pipelines(subparsers):
for cls in [
DocPreprocessor,
DocUnderstanding,
FormulaRecognitionPipeline,
PaddleOCR,
PPChatOCRv4Doc,
PPStructureV3,
SealRecognition,
TableRecognitionPipelineV2,
]:
subcommand_executor = cls.get_cli_subcommand_executor()
subparser = subcommand_executor.add_subparser(subparsers)
subparser.set_defaults(executor=subcommand_executor.execute_with_args)
def _register_models(subparsers):
for cls in [
DocImgOrientationClassification,
DocVLM,
FormulaRecognition,
LayoutDetection,
SealTextDetection,
TableCellsDetection,
TableClassification,
TableStructureRecognition,
TextDetection,
TextImageUnwarping,
TextLineOrientationClassification,
TextRecognition,
]:
subcommand_executor = cls.get_cli_subcommand_executor()
subparser = subcommand_executor.add_subparser(subparsers)
subparser.set_defaults(executor=subcommand_executor.execute_with_args)
def _parse_args():
parser = argparse.ArgumentParser(prog="paddleocr")
parser.add_argument("--version", action="version", version=f"%(prog)s {version}")
subparsers = parser.add_subparsers(dest="subcommand")
_register_pipelines(subparsers)
_register_models(subparsers)
return parser.parse_args()
def _execute(args):
args.executor(args)
def main():
warnings.filterwarnings("default", category=CLIDeprecationWarning)
args = _parse_args()
_execute(args)