mirror of
https://github.com/RapidAI/RapidOCR.git
synced 2026-11-10 21:10:55 +08:00
fix: fixed issue #531
This commit is contained in:
1 parent
a0bb926500
commit
336e6424a5
17 files changed
+41
-41
No files matched your search
@@ -17,12 +17,10 @@ from typing import List, Optional, Tuple, Union
|
||||
|
||||
import numpy as np
|
||||
|
||||
from ..utils.logger import Logger
|
||||
from ..utils.log import logger
|
||||
from ..utils.utils import save_img
|
||||
from ..utils.vis_res import VisRes
|
||||
|
||||
logger = Logger(logger_name=__name__).get_log()
|
||||
|
||||
|
||||
@dataclass
|
||||
class TextClsOutput:
|
||||
|
||||
@@ -9,12 +9,10 @@ import numpy as np
|
||||
import pyclipper
|
||||
from shapely.geometry import Polygon
|
||||
|
||||
from ..utils.logger import Logger
|
||||
from ..utils.log import logger
|
||||
from ..utils.utils import save_img
|
||||
from ..utils.vis_res import VisRes
|
||||
|
||||
logger = Logger(logger_name=__name__).get_log()
|
||||
|
||||
|
||||
@dataclass
|
||||
class TextDetOutput:
|
||||
|
||||
@@ -21,8 +21,8 @@ import numpy as np
|
||||
|
||||
from rapidocr.inference_engine.base import FileInfo, get_engine
|
||||
|
||||
from ..utils import Logger
|
||||
from ..utils.download_file import DownloadFile, DownloadFileInput
|
||||
from ..utils.log import logger
|
||||
from ..utils.vis_res import VisRes
|
||||
from .typings import TextRecInput, TextRecOutput
|
||||
from .utils import CTCLabelDecode
|
||||
@@ -35,7 +35,7 @@ DEFAULT_MODEL_PATH = Path(__file__).parent.parent / "models"
|
||||
class TextRecognizer:
|
||||
def __init__(self, cfg: Dict[str, Any]):
|
||||
self.session = get_engine(cfg.engine_type)(cfg)
|
||||
self.logger = Logger(logger_name=__name__).get_log()
|
||||
self.logger = logger
|
||||
|
||||
# onnx has inner character, other engine get or download character_dict_path
|
||||
character, character_dict_path = self.get_character_dict(cfg)
|
||||
|
||||
@@ -8,12 +8,10 @@ from typing import List, Optional, Tuple, Union
|
||||
|
||||
import numpy as np
|
||||
|
||||
from ..utils.logger import Logger
|
||||
from ..utils.log import logger
|
||||
from ..utils.utils import save_img
|
||||
from ..utils.vis_res import VisRes
|
||||
|
||||
logger = Logger(logger_name=__name__).get_log()
|
||||
|
||||
|
||||
@dataclass
|
||||
class TextRecConfig:
|
||||
|
||||
@@ -14,6 +14,7 @@ Global:
|
||||
return_single_char_box: false
|
||||
|
||||
font_path: null
|
||||
log_level: "info" # debug / info / warning / error / critical
|
||||
|
||||
EngineConfig:
|
||||
onnxruntime:
|
||||
|
||||
@@ -10,15 +10,13 @@ from typing import Dict, Union
|
||||
import numpy as np
|
||||
from omegaconf import OmegaConf
|
||||
|
||||
from ..utils.logger import Logger
|
||||
from ..utils.log import logger
|
||||
from ..utils.typings import EngineType, ModelType, OCRVersion, TaskType
|
||||
from ..utils.utils import import_package
|
||||
|
||||
cur_dir = Path(__file__).resolve().parent.parent
|
||||
MODEL_URL_PATH = cur_dir / "default_models.yaml"
|
||||
|
||||
logger = Logger(logger_name=__name__).get_log()
|
||||
|
||||
|
||||
def get_engine(engine_type: EngineType):
|
||||
logger.info("Using engine_name: %s", engine_type.value)
|
||||
@@ -70,7 +68,6 @@ class FileInfo:
|
||||
class InferSession(abc.ABC):
|
||||
model_info = OmegaConf.load(MODEL_URL_PATH)
|
||||
DEFAULT_MODEL_PATH = cur_dir / "models"
|
||||
logger = Logger(logger_name=__name__).get_log()
|
||||
|
||||
@abc.abstractmethod
|
||||
def __init__(self, config):
|
||||
|
||||
@@ -10,14 +10,14 @@ import numpy as np
|
||||
from onnxruntime import GraphOptimizationLevel, InferenceSession, SessionOptions
|
||||
|
||||
from ...utils import DownloadFile, DownloadFileInput
|
||||
from ...utils.logger import Logger
|
||||
from ...utils.log import logger
|
||||
from ..base import FileInfo, InferSession
|
||||
from .provider_config import ProviderConfig
|
||||
|
||||
|
||||
class OrtInferSession(InferSession):
|
||||
def __init__(self, cfg: Dict[str, Any]):
|
||||
self.logger = Logger(logger_name=__name__).get_log()
|
||||
self.logger = logger
|
||||
|
||||
# support custom session (PR #451)
|
||||
session = cfg.get("session", None)
|
||||
|
||||
@@ -7,7 +7,7 @@ from typing import Any, Dict, List, Sequence, Tuple
|
||||
|
||||
from onnxruntime import get_available_providers, get_device
|
||||
|
||||
from ...utils.logger import Logger
|
||||
from ...utils.log import logger
|
||||
|
||||
|
||||
class EP(Enum):
|
||||
@@ -19,7 +19,7 @@ class EP(Enum):
|
||||
|
||||
class ProviderConfig:
|
||||
def __init__(self, engine_cfg: Dict[str, Any]):
|
||||
self.logger = Logger(logger_name=__name__).get_log()
|
||||
self.logger = logger
|
||||
|
||||
self.had_providers: List[str] = get_available_providers()
|
||||
self.default_provider = self.had_providers[0]
|
||||
|
||||
@@ -10,15 +10,15 @@ import numpy as np
|
||||
from omegaconf import DictConfig
|
||||
from openvino.runtime import Core
|
||||
|
||||
from ..utils import Logger
|
||||
from ..utils.download_file import DownloadFile, DownloadFileInput
|
||||
from ..utils.log import logger
|
||||
from .base import FileInfo, InferSession
|
||||
|
||||
|
||||
class OpenVINOInferSession(InferSession):
|
||||
def __init__(self, cfg: DictConfig):
|
||||
super().__init__(cfg)
|
||||
self.logger = Logger(logger_name=__name__).get_log()
|
||||
self.logger = logger
|
||||
|
||||
core = Core()
|
||||
|
||||
|
||||
@@ -12,14 +12,14 @@ from omegaconf.errors import ConfigKeyError
|
||||
from paddle import inference
|
||||
|
||||
from ..utils.download_file import DownloadFile, DownloadFileInput
|
||||
from ..utils.logger import Logger
|
||||
from ..utils.log import logger
|
||||
from ..utils.typings import OCRVersion
|
||||
from .base import FileInfo, InferSession
|
||||
|
||||
|
||||
class PaddleInferSession(InferSession):
|
||||
def __init__(self, cfg, mode: Optional[str] = None) -> None:
|
||||
self.logger = Logger(logger_name=__name__).get_log()
|
||||
self.logger = logger
|
||||
self.mode = mode
|
||||
|
||||
# 设置设备特定的环境变量
|
||||
@@ -43,7 +43,12 @@ class PaddleInferSession(InferSession):
|
||||
envs = {}
|
||||
_set_envs(envs)
|
||||
|
||||
elif not any([engine_cfg.get(f"use_{dev}", False) for dev in ["cuda", "npu", "xpu", "mlu", "dcu", "gcu"]]):
|
||||
elif not any(
|
||||
[
|
||||
engine_cfg.get(f"use_{dev}", False)
|
||||
for dev in ["cuda", "npu", "xpu", "mlu", "dcu", "gcu"]
|
||||
]
|
||||
):
|
||||
envs = {}
|
||||
_set_envs(envs)
|
||||
|
||||
@@ -109,11 +114,11 @@ class PaddleInferSession(InferSession):
|
||||
return pdmodel_path, pdiparams_path
|
||||
|
||||
def download_model(
|
||||
self, model_info, default_model_dir: str, model_file_name: str
|
||||
self, model_info, default_model_dir: str, model_file_name: str
|
||||
) -> Path:
|
||||
model_file_url = f"{default_model_dir}/{model_file_name}"
|
||||
model_file_path = (
|
||||
self.DEFAULT_MODEL_PATH / Path(default_model_dir).name / model_file_name
|
||||
self.DEFAULT_MODEL_PATH / Path(default_model_dir).name / model_file_name
|
||||
)
|
||||
DownloadFile.run(
|
||||
DownloadFileInput(
|
||||
@@ -191,7 +196,9 @@ class PaddleInferSession(InferSession):
|
||||
infer_num_threads = cfg.engine_cfg.get("cpu_math_library_num_threads", -1)
|
||||
if infer_num_threads != -1 and 1 <= infer_num_threads <= cpu_nums:
|
||||
infer_opts.set_cpu_math_library_num_threads(infer_num_threads)
|
||||
self.logger.info(f"Set CPU math library threads to: {infer_num_threads}")
|
||||
self.logger.info(
|
||||
f"Set CPU math library threads to: {infer_num_threads}"
|
||||
)
|
||||
|
||||
if hasattr(infer_opts, "enable_new_ir"):
|
||||
infer_opts.enable_new_ir(True)
|
||||
|
||||
@@ -9,7 +9,7 @@ from omegaconf import OmegaConf
|
||||
|
||||
from ..networks.architectures.base_model import BaseModel
|
||||
from ..utils.download_file import DownloadFile, DownloadFileInput
|
||||
from ..utils.logger import Logger
|
||||
from ..utils.log import logger
|
||||
from .base import FileInfo, InferSession
|
||||
|
||||
root_dir = Path(__file__).resolve().parent.parent
|
||||
@@ -18,7 +18,7 @@ DEFAULT_CFG_PATH = root_dir / "networks" / "arch_config.yaml"
|
||||
|
||||
class TorchInferSession(InferSession):
|
||||
def __init__(self, cfg) -> None:
|
||||
self.logger = Logger(logger_name=__name__).get_log()
|
||||
self.logger = logger
|
||||
|
||||
model_path = cfg.get("model_path", None)
|
||||
if model_path is None:
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
# @Contact: liekkaskono@163.com
|
||||
import argparse
|
||||
import copy
|
||||
import logging
|
||||
from pathlib import Path
|
||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||
|
||||
@@ -17,7 +18,6 @@ from .ch_ppocr_rec import TextRecInput, TextRecognizer, TextRecOutput
|
||||
from .cli import check_install, generate_cfg
|
||||
from .utils import (
|
||||
LoadImage,
|
||||
Logger,
|
||||
RapidOCROutput,
|
||||
VisRes,
|
||||
add_round_letterbox,
|
||||
@@ -25,6 +25,7 @@ from .utils import (
|
||||
get_rotate_crop_image,
|
||||
resize_image_within_bounds,
|
||||
)
|
||||
from .utils.log import logger
|
||||
from .utils.parse_parameters import ParseParams
|
||||
from .utils.typings import LangRec
|
||||
|
||||
@@ -37,9 +38,11 @@ class RapidOCR:
|
||||
self, config_path: Optional[str] = None, params: Optional[Dict[str, Any]] = None
|
||||
):
|
||||
cfg = self._load_config(config_path, params)
|
||||
self._initialize(cfg)
|
||||
|
||||
self.logger = Logger(logger_name=__name__).get_log()
|
||||
logger.setLevel(logging.getLevelName(cfg.Global.log_level.upper()))
|
||||
self.logger = logger
|
||||
|
||||
self._initialize(cfg)
|
||||
|
||||
def _load_config(
|
||||
self, config_path: Optional[str], params: Optional[Dict[str, Any]]
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
# @Contact: liekkaskono@163.com
|
||||
from .download_file import DownloadFile, DownloadFileException, DownloadFileInput
|
||||
from .load_image import LoadImage, LoadImageError
|
||||
from .logger import Logger
|
||||
from .output import RapidOCROutput
|
||||
from .parse_parameters import ParseParams
|
||||
from .process_img import (
|
||||
|
||||
@@ -7,7 +7,7 @@ import colorlog
|
||||
|
||||
|
||||
class Logger:
|
||||
def __init__(self, log_level=logging.DEBUG, logger_name=None):
|
||||
def __init__(self, log_level=logging.INFO, logger_name=None):
|
||||
self.logger = logging.getLogger(logger_name)
|
||||
self.logger.setLevel(log_level)
|
||||
self.logger.propagate = False
|
||||
@@ -35,3 +35,6 @@ class Logger:
|
||||
|
||||
def get_log(self):
|
||||
return self.logger
|
||||
|
||||
|
||||
logger = Logger(log_level=logging.INFO).get_log()
|
||||
@@ -6,14 +6,12 @@ from typing import Any, Dict, List, Optional, Tuple, Union
|
||||
|
||||
import numpy as np
|
||||
|
||||
from .logger import Logger
|
||||
from .log import logger
|
||||
from .to_json import ToJSON
|
||||
from .to_markdown import ToMarkdown
|
||||
from .utils import save_img
|
||||
from .vis_res import VisRes
|
||||
|
||||
logger = Logger(logger_name=__name__).get_log()
|
||||
|
||||
|
||||
@dataclass
|
||||
class RapidOCROutput:
|
||||
|
||||
@@ -13,7 +13,7 @@ from PIL import Image, ImageDraw, ImageFont
|
||||
|
||||
from .download_file import DownloadFile, DownloadFileInput
|
||||
from .load_image import LoadImage
|
||||
from .logger import Logger
|
||||
from .log import logger
|
||||
from .typings import LangRec
|
||||
|
||||
root_dir = Path(__file__).resolve().parent.parent
|
||||
@@ -31,7 +31,7 @@ class VisRes:
|
||||
lang_type: Optional[LangRec] = None,
|
||||
font_path: Optional[str] = None,
|
||||
):
|
||||
self.logger = Logger(logger_name=__name__).get_log()
|
||||
self.logger = logger
|
||||
|
||||
self.text_score = text_score
|
||||
self.load_img = LoadImage()
|
||||
|
||||
@@ -16,12 +16,10 @@ sys.path.append(str(root_dir))
|
||||
|
||||
from rapidocr import EngineType, LangRec, LoadImageError, ModelType, RapidOCR
|
||||
from rapidocr.main import main
|
||||
from rapidocr.utils.logger import Logger
|
||||
from rapidocr.utils.typings import OCRVersion
|
||||
|
||||
tests_dir = root_dir / "tests" / "test_files"
|
||||
img_path = tests_dir / "ch_en_num.jpg"
|
||||
logger = Logger(logger_name=__name__).get_log()
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
|
||||
Reference in new issue
Block a user