first commit
Some checks are pending
Build/Publish Develop Docs / deploy (push) Waiting to run

This commit is contained in:
2025-07-02 08:57:16 +03:00
commit 56532cc9a9
1901 changed files with 457695 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
# 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.

72
paddleocr/_utils/cli.py Normal file
View File

@@ -0,0 +1,72 @@
# 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 time
from .logging import logger
def str2bool(v, /):
return v.lower() in ("true", "yes", "t", "y", "1")
def get_subcommand_args(args):
args = vars(args).copy()
args.pop("subcommand")
args.pop("executor")
return args
def add_simple_inference_args(subparser, *, input_help=None):
if input_help is None:
input_help = "Input path or URL."
subparser.add_argument(
"-i",
"--input",
type=str,
required=True,
help=input_help,
)
subparser.add_argument(
"--save_path",
type=str,
help="Path to the output directory.",
)
def perform_simple_inference(wrapper_cls, params, predict_param_names=None):
params = params.copy()
input_ = params.pop("input")
save_path = params.pop("save_path")
if predict_param_names is not None:
predict_params = {}
for name in predict_param_names:
predict_params[name] = params.pop(name)
else:
predict_params = {}
init_params = params
wrapper = wrapper_cls(**init_params)
result = wrapper.predict_iter(input_, **predict_params)
t1 = time.time()
for i, res in enumerate(result):
logger.info(f"Processed item {i} in {(time.time()-t1) * 1000} ms")
t1 = time.time()
res.print()
if save_path:
res.save_all(save_path)

View File

@@ -0,0 +1,42 @@
# 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 sys
import warnings
from typing_extensions import deprecated as deprecated
class CLIDeprecationWarning(DeprecationWarning):
pass
class DeprecatedOptionAction(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
assert option_string
warnings.warn(
f"The option `{option_string}` has been deprecated and will be removed in the future. Please refer to the documentation for more details.",
CLIDeprecationWarning,
)
setattr(namespace, self.dest, values)
def warn_deprecated_param(name, new_name=None):
msg = (
f"The parameter `{name}` has been deprecated and will be removed in the future."
)
if new_name is not None:
msg += f" Please use `{new_name}` instead."
warnings.warn(msg, DeprecationWarning, stacklevel=3)

View File

@@ -0,0 +1,39 @@
# 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 logging
from .._env import DISABLE_AUTO_LOGGING_CONFIG
LOGGER_NAME = "paddleocr"
logger = logging.getLogger(LOGGER_NAME)
def _set_up_logger():
if DISABLE_AUTO_LOGGING_CONFIG:
return
# Basically compatible with PaddleOCR 2.x, except for logging to stderr
formatter = logging.Formatter(
"[%(asctime)s] %(name)s %(levelname)s: %(message)s", datefmt="%Y/%m/%d %H:%M:%S"
)
stream_handler = logging.StreamHandler()
stream_handler.setFormatter(formatter)
logger.addHandler(stream_handler)
logger.setLevel(logging.ERROR)
logger.propagate = False
_set_up_logger()