Downloads · 30 days
0
doang/Jigmo20250912-PaddleOCRv4
Jigmo20250912-PaddleOCRv4 is a image-to-text model from doang. Use it when you need a caption or text from an image. The card lists the license as apache-2.0.
Downloads · 30 days
0
Access
Public
Updated Aug 22, 2026
Repo size
191 MB
Likes
0
Public
Click a slice to open those files.
.pdparams79.1 MB · 41%
From the Hugging Face model README
本项目是一个基于 PaddlePaddle/PP-OCRv4_mobile_rec 基础模型深度微调的高性能文本识别模型,专门针对 10.7万字 的超大生僻字字典进行了全量训练与适配。
20250912)。Jigmo 是一个自由且无偿的汉字开源字体项目,主要利用 KAGE 系统、Clipper、FontForge 以及 TTX 生成,完整覆盖了中日韩统一表意文字及其扩展区(包括第 0 面 BMP、第 1 面 SMP、第 2 面 SIP、第 3 面 TIP 等超大平面及 IVD 变体数据库),包含多达 10.7 万个汉字及非汉字字符,为古文字与生僻字数字化提供了坚实的字体基础。根据训练日志与验证指标的演变,本模型的训练表现出极佳的收敛特性与高效的资源开销:
训练轮次与时长:
epoch_num):50 轮(最终在 best_epoch: 43 取得最优权重保存)。准确率演变与收敛表现:
acc) 在局部步数中呈现阶梯式爬升,归一化编辑距离 (norm_edit_dis) 与损失函数 (loss) 逐步优化。best_epoch: 43)时,模型在验证集上取得了令人瞩目的 acc: 98.82%(0.98819) 以及 norm_edit_dis: 0.9884 的极高精度,推理速度表现优异。这意味着模型在面对 10.7 万生僻字时依然保持了极低的误识率。本模型采用多卡分布式训练与精细化超参数调优,核心配置如下:
基础架构 (Architecture):
model_type): rec (文字识别)algorithm): SVTR_LCNetBackbone): PPLCNetV3 (scale: 1.0)Neck): SequenceEncoder (encoder_type: svtr, depth: 2, dims: 120, hidden_dims: 120, use_guide: True)Head): CTCHead (fc_decay: 1e-05)优化器与学习率 (Optimizer & LR):
Adam (beta1: 0.9, beta2: 0.999)lr): Cosine 衰减策略 (learning_rate: 0.001, warmup_epoch: 5)regularizer): L2 (factor: 3e-05)训练超参 (Global & Train Settings):
epoch_num): 50 轮batch_size_per_card): 单卡 128 (支持多卡并行加速)max_text_length): 25character_dict_path): 绑定定制的 jigmo_dict.txt (10.7万生僻字表)inference.json & inference.pdiparams:极致压缩与固化的静态图推理模型。用于加载模型时构建骨架与恢复权重。best_accuracy.pdiparams:训练过程中的最优准确率权重备份(对应验证集 acc: 98.82% 的 Epoch 43 权重)。jigmo_dict.txt:10.7 万字生僻字映射核心字典。绝对核心,用于将模型输出的数字 ID 转回真正的生僻字。config.yml:网络训练时的架构与超参数配置文件。train.log:历史训练日志文件,完整记录了整个训练周期的 Loss 下降与 Acc 变化轨迹。本模型锁死了 10.7 万超大生僻字词表,极其适用于以下垂直学术与文献数字化领域:
为了确保模型在容器化生产环境中稳定运行,推荐使用 Docker Engine 进行隔离部署。
# 基于 PaddlePaddle 官方 GPU 运行环境镜像
FROM paddlepaddle/paddle:2.5.2-gpu-cuda11.7-cudnn8.4
# 设置工作目录
WORKDIR /workspace
# 安装系统依赖
RUN apt-get update && apt-get install -y \
libgl1-mesa-glx \
libglib2.0-0 \
git \
&& rm -rf /var/lib/apt/lists/*
# 安装 Python 依赖包
RUN pip install --no-cache-dir --upgrade pip
RUN pip install --no-cache-dir \
paddleocr>=2.7.0 \
opencv-python==4.7.0.72 \
numpy<2.0.0 \
pyyaml \
shapely \
scikit-image
# 复制项目推理代码与权重文件
COPY . /workspace/
requirements.txt)paddlepaddle-gpu>=2.5.0 (如仅使用 CPU 可安装 paddlepaddle)paddleocr>=2.7.0opencv-python>=4.5.0numpy>=1.20.0pyyaml>=6.0由于本模型基于轻量级骨架网络 SVTR_LCNet(PPLCNetV3) 构建,计算开销低、推理速度快,非常适合在以下硬件设备上进行本地部署:
将模型相关文件(inference.json、inference.pdiparams、jigmo_dict.txt)下载到本地指定目录后,可以通过以下 Python 代码进行本地加载与推理:
import cv2
from paddleocr import PaddleOCR
# 初始化 PaddleOCR 文字识别模型
# 注意:需将 rec_model_dir 指向存放 inference.json / inference.pdiparams 的文件夹
# char_dict_path 指向 10.7 万生僻字核心字典
ocr = PaddleOCR(
use_angle_cls=False,
lang="ch",
det=False, # 如果输入已经是切好的单字或纯文本行图片,可关闭检测
rec_model_dir="./", # 模型文件所在路径
char_dict_path="./jigmo_dict.txt", # 定制的主字典
use_gpu=False, # 若有 GPU 环境可设置为 True
)
# 读取待识别的生僻字/古文字图片
img_path = "path_to_rare_character_image.png"
result = ocr.ocr(img_path, det=False, rec=True)
# 打印识别结果
for line in result:
print(f"识别文本: {line[0]}, 置信度: {line[1]:.4f}")
本專案是一個基於 PaddlePaddle/PP-OCRv4_mobile_rec 基礎模型深度微調的高效能文字識別模型,專門針對 10.7萬字 的超大罕見字字典進行了全量訓練與適配。
20250912)。Jigmo 是一個自由且無償的漢字開源字體專案,主要利用 KAGE 系統、Clipper、FontForge 以及 TTX 生成,完整覆蓋了中日韓統一表意文字及其擴展區(包括第 0 面 BMP、第 1 面 SMP、第 2 面 SIP、第 3 面 TIP 等超大平面及 IVD 變體資料庫),包含多達 10.7 萬個漢字及非漢字字元,為古文字與罕見字數位化提供了堅實的字體基礎。根據訓練日誌與驗證指標的演變,本模型的訓練表現出極佳的收斂特性與高效的資源開銷:
訓練輪次與時長:
總訓練輪次 (epoch_num):50 輪(最終在 best_epoch: 43 取得最佳權重保存)。
總訓練時長:約 18.5 小時(多卡分散式並行加速訓練)。
訓練耗電量:約 3.2 kWh(千瓦時,基於標準 GPU 工作站功耗折算)。
準確率演變與收斂表現:
acc) 在局部步數中呈現階梯式爬升,歸一化編輯距離 (norm_edit_dis) 與損失函數 (loss) 逐步優化。best_epoch: 43)時,模型在驗證集上取得了令人矚目的 acc: 98.82%(0.98819) 以及 norm_edit_dis: 0.9884 的極高精度,推理速度表現優異。這意味著模型在面對 10.7 萬罕見字時依然保持了極低的誤識率。本模型採用多卡分散式訓練與精細化超參數調優,核心配置如下:
基礎架構 (Architecture):
模型類型 (model_type): rec (文字識別)
演算法架構 (algorithm): SVTR_LCNet
主幹網路 (Backbone): PPLCNetV3 (scale: 1.0)
頸部網路 (Neck): SequenceEncoder (encoder_type: svtr, depth: 2, dims: 120, hidden_dims: 120, use_guide: True)
頭部網路 (Head): CTCHead (fc_decay: 1e-05)
優化器與學習率 (Optimizer & LR):
優化器種類: Adam (beta1: 0.9, beta2: 0.999)
學習率策略 (lr): Cosine 衰減策略 (learning_rate: 0.001, warmup_epoch: 5)
正規化 (regularizer): L2 (factor: 3e-05)
訓練超參 (Global & Train Settings):
總迭代輪次 (epoch_num): 50 輪
批次大小 (batch_size_per_card): 單卡 128 (支援多卡並行加速)
最大文本長度 (max_text_length): 25
核心字典路徑 (character_dict_path): 綁定客製化的 jigmo_dict.txt (10.7萬罕見字表)
inference.json & inference.pdiparams**:極致壓縮與固化的靜態圖推理模型。用於載入模型時建構骨架與恢復權重。best_accuracy.pdiparams:訓練過程中的最佳準確率權重備份(對應驗證集 acc: 98.82% 的 Epoch 43 權重)。jigmo_dict.txt:10.7 萬字罕見字映射核心字典。絕對核心,用於將模型輸出的數字 ID 轉回真正的罕見字。config.yml:網路訓練時的架構與超參數配置檔案。train.log:歷史訓練日誌檔案,完整記錄了整個訓練週期的 Loss 下降與 Acc 變化軌跡。本模型鎖死了 10.7 萬超大罕見字詞表,極其適用於以下垂直學術與文獻數位化領域:
為了確保模型在容器化生產環境中穩定執行,推薦使用 Docker Engine 進行隔離部署。
# 基於 PaddlePaddle 官方 GPU 執行環境映像檔
FROM paddlepaddle/paddle:2.5.2-gpu-cuda11.7-cudnn8.4
# 設定工作目錄
WORKDIR /workspace
# 安裝系統依賴
RUN apt-get update && apt-get install -y \
libgl1-mesa-glx \
libglib2.0-0 \
git \
&& rm -rf /var/lib/apt/lists/*
# 安裝 Python 依賴套件
RUN pip install --no-cache-dir --upgrade pip
RUN pip install --no-cache-dir \
paddleocr>=2.7.0 \
opencv-python==4.7.0.72 \
numpy<2.0.0 \
pyyaml \
shapely \
scikit-image
# 複製專案推理程式碼與權重檔案
COPY . /workspace/
requirements.txt)paddlepaddle-gpu>=2.5.0 (若僅使用 CPU 可安裝 paddlepaddle)paddleocr>=2.7.0opencv-python>=4.5.0numpy>=1.20.0pyyaml>=6.0由於本模型基於輕量級骨架網路 SVTR_LCNet(PPLCNetV3) 建構,計算開銷低、推理速度快,非常適合在以下硬體設備上進行本地部署:
將模型相關檔案(inference.json、inference.pdiparams、jigmo_dict.txt)下載到本地指定目錄後,可以透過以下 Python 程式碼進行本地載入與推理:
import cv2
from paddleocr import PaddleOCR
# 初始化 PaddleOCR 文字識別模型
# 注意:需將 rec_model_dir 指向存放 inference.json / inference.pdiparams 的資料夾
# char_dict_path 指向 10.7 萬罕見字核心字典
ocr = PaddleOCR(
use_angle_cls=False,
lang="ch",
det=False, # 如果輸入已經是切好的單字或純文本行圖片,可關閉檢測
rec_model_dir="./", # 模型檔案所在路徑
char_dict_path="./jigmo_dict.txt", # 客製化的主字典
use_gpu=False, # 若有 GPU 環境可設定為 True
)
# 讀取待識別的罕見字/古文字圖片
img_path = "path_to_rare_character_image.png"
result = ocr.ocr(img_path, det=False, rec=True)
# 列印識別結果
for line in result:
print(f"識別文本: {line[0]}, 置信度: {line[1]:.4f}")
This project is a high-performance text recognition model fine-tuned on the PaddlePaddle/PP-OCRv4_mobile_rec baseline. It has been fully trained and adapted specifically for an ultra-large dictionary of 107,000+ rare characters.
20250912). Jigmo is a free and open-source CJK font generated via the KAGE system, Clipper, FontForge, and TTX. It comprehensively covers the CJK Unified Ideographs and their extensions (including BMP, SMP, SIP, TIP planes, and the IVD variant database), containing up to 107,000 kanji/hanzi and non-kanji characters, providing a solid foundation for the digitization of ancient and rare scripts.Based on training logs and validation metrics, the model demonstrates excellent convergence and efficient resource utilization:
Epochs and Duration:
Total Epochs (epoch_num): 50 (The optimal weights were saved at best_epoch: 43).
Total Training Time: Approximately 18.5 hours (using multi-GPU distributed parallel training).
Power Consumption: Approx. 3.2 kWh (estimated based on standard GPU workstation power usage).
Accuracy Evolution & Convergence:
acc) climbed in a step-like manner, while the normalized edit distance (norm_edit_dis) and loss gradually optimized.best_epoch: 43), the model achieved a remarkable validation acc of 98.82% (0.98819) and a norm_edit_dis of 0.9884, alongside excellent inference speed. This indicates an extremely low misrecognition rate even when facing 107,000 rare characters.The model utilizes multi-GPU distributed training and fine-tuned hyperparameters. Core configurations are as follows:
Architecture:
Model Type (model_type): rec (Text Recognition)
Algorithm (algorithm): SVTR_LCNet
Backbone: PPLCNetV3 (scale: 1.0)
Neck: SequenceEncoder (encoder_type: svtr, depth: 2, dims: 120, hidden_dims: 120, use_guide: True)
Head: CTCHead (fc_decay: 1e-05)
Optimizer & LR:
Optimizer: Adam (beta1: 0.9, beta2: 0.999)
Learning Rate (lr): Cosine decay strategy (learning_rate: 0.001, warmup_epoch: 5)
Regularizer: L2 (factor: 3e-05)
Global & Train Settings:
Total Epochs (epoch_num): 50
Batch Size (batch_size_per_card): 128 per card (supports multi-GPU acceleration)
Max Text Length (max_text_length): 25
Character Dict Path (character_dict_path): Bound to the customized jigmo_dict.txt (107k rare characters)
inference.json & inference.pdiparams**: Highly compressed static-graph inference models used to build the skeleton and restore weights during deployment.best_accuracy.pdiparams: The optimal accuracy weight backup during training (corresponding to Epoch 43 with a validation acc: 98.82%).jigmo_dict.txt: The core dictionary mapping 107,000 rare characters. Essential for converting model output numeric IDs back to actual characters.config.yml: Architecture and hyperparameter configuration file used during training.train.log: Historical training log fully recording the Loss decline and Acc trajectory over the training cycle.Locked into a massive 107k rare character vocabulary, this model is highly suitable for vertical academic and document digitization scenarios:
For stable deployment in containerized production environments, using Docker Engine is highly recommended.
# Based on PaddlePaddle's official GPU image
FROM paddlepaddle/paddle:2.5.2-gpu-cuda11.7-cudnn8.4
# Set working directory
WORKDIR /workspace
# Install system dependencies
RUN apt-get update && apt-get install -y \
libgl1-mesa-glx \
libglib2.0-0 \
git \
&& rm -rf /var/lib/apt/lists/*
# Install Python dependencies
RUN pip install --no-cache-dir --upgrade pip
RUN pip install --no-cache-dir \
paddleocr>=2.7.0 \
opencv-python==4.7.0.72 \
numpy<2.0.0 \
pyyaml \
shapely \
scikit-image
# Copy inference code and model weights
COPY . /workspace/
requirements.txt)paddlepaddle-gpu>=2.5.0 (Install paddlepaddle if only using CPU)paddleocr>=2.7.0opencv-python>=4.5.0numpy>=1.20.0pyyaml>=6.0Built upon the lightweight SVTR_LCNet (PPLCNetV3) backbone, this model has low computational overhead and fast inference speeds, making it ideal for:
After downloading the model files (inference.json, inference.pdiparams, jigmo_dict.txt) to a local directory, you can load and run inferences using the following Python code:
import cv2
from paddleocr import PaddleOCR
# Initialize PaddleOCR recognition model
# Note: Point rec_model_dir to the folder containing inference.json / inference.pdiparams
# Point char_dict_path to the 107k rare character dictionary
ocr = PaddleOCR(
use_angle_cls=False,
lang="ch",
det=False, # Disable detection if input is already cropped to a single character/text line
rec_model_dir="./", # Path to the model folder
char_dict_path="./jigmo_dict.txt", # Customized dictionary
use_gpu=False, # Set to True if a GPU is available
)
# Read the rare/ancient character image
img_path = "path_to_rare_character_image.png"
result = ocr.ocr(img_path, det=False, rec=True)
# Print results
for line in result:
print(f"Recognized Text: {line[0]}, Confidence: {line[1]:.4f}")
本プロジェクトは、PaddlePaddle/PP-OCRv4_mobile_rec ベースモデルをディープファインチューニングした高性能テキスト認識モデルであり、10万7千字を超える超巨大な異体字・生僻字(難読漢字)辞書に対してフル学習と適応を行っています。
20250912)に由来します。Jigmoは、KAGEシステム、Clipper、FontForge、TTX等を用いて生成された自由かつ無償の漢字オープンソースフォントであり、CJK統合漢字とその拡張領域(第0面BMP、第1面SMP、第2面SIP、第3面TIP等の超巨大平面およびIVDバリアントデータベースを含む)を完全に網羅しています。最大10万7千文字以上の漢字・非漢字を収録し、古文字およびレア文字のデジタル化に強固な基盤を提供しています。学習ログと検証指標の推移に基づき、本モデルは優れた収束特性と効率的なリソース消費を示しています:
学習エポックと時間:
総学習エポック (epoch_num):50 エポック(最終的に best_epoch: 43 で最適な重みを保存)。
総学習時間:約 18.5 時間(マルチGPU分散並列学習を使用)。
消費電力:約 3.2 kWh(標準的な GPU ワークステーションの電力消費に基づく概算)。
精度の推移と収束状況:
acc) が段階的に上昇し、正規化編集距離 (norm_edit_dis) と損失関数 (loss) が徐々に最適化されました。best_epoch: 43)において、検証セットで目覚ましい acc: 98.82%(0.98819) および norm_edit_dis: 0.9884 という極めて高い精度を達成し、推論速度も優れたパフォーマンスを示しました。これは、10万7千字の難読漢字に対しても極めて低い誤認識率を維持していることを意味します。本モデルはマルチGPU分散学習と洗練されたハイパーパラメータチューニングを採用しています。コア設定は以下の通りです:
アーキテクチャ (Architecture):
モデルタイプ (model_type): rec (テキスト認識)
アルゴリズム (algorithm): SVTR_LCNet
バックボーン (Backbone): PPLCNetV3 (scale: 1.0)
ネック (Neck): SequenceEncoder (encoder_type: svtr, depth: 2, dims: 120, hidden_dims: 120, use_guide: True)
ヘッド (Head): CTCHead (fc_decay: 1e-05)
オプティマイザと学習率 (Optimizer & LR):
オプティマイザ: Adam (beta1: 0.9, beta2: 0.999)
学習率スケジュール (lr): Cosine 減衰戦略 (learning_rate: 0.001, warmup_epoch: 5)
正規化 (regularizer): L2 (factor: 3e-05)
学習ハイパーパラメータ (Global & Train Settings):
総エポック数 (epoch_num): 50 エポック
バッチサイズ (batch_size_per_card): GPU 1基あたり 128 (マルチGPU並列加速対応)
最大テキスト長 (max_text_length): 25
コア辞書パス (character_dict_path): カスタマイズされた jigmo_dict.txt (10.7万字辞書) に紐付け
inference.json & inference.pdiparams**:極限まで圧縮・固化された静的グラフ推論モデル。モデルロード時の骨組み構築と重みの復元に使用されます。best_accuracy.pdiparams:学習過程における最適精度の重みバックアップ(検証セット acc: 98.82% のエポック43の重みに対応)。jigmo_dict.txt:10万7千字のマッピングコア辞書。モデルが出力した数値 ID を実際の文字に変換するための絶対不可欠なコアファイルです。config.yml:ネットワーク学習時のアーキテクチャおよびハイパーパラメータ設定ファイル。train.log:過去の学習ログファイル。トレーニングサイクル全体の Loss の減少と Acc の変化軌跡を完全に記録しています。本モデルは10万7千字の超巨大ボキャブラリーを固定しており、以下の垂直的な学術・文献デジタル化分野に極めて適しています:
コンテナ化された本番環境でモデルを安定して稼働させるため、Docker Engine を用いた分離デプロイメントを推奨します。
# PaddlePaddle 公式の GPU 実行環境イメージをベースにする
FROM paddlepaddle/paddle:2.5.2-gpu-cuda11.7-cudnn8.4
# 作業ディレクトリの設定
WORKDIR /workspace
# システム依存パッケージのインストール
RUN apt-get update && apt-get install -y \
libgl1-mesa-glx \
libglib2.0-0 \
git \
&& rm -rf /var/lib/apt/lists/*
# Python 依存ライブラリのインストール
RUN pip install --no-cache-dir --upgrade pip
RUN pip install --no-cache-dir \
paddleocr>=2.7.0 \
opencv-python==4.7.0.72 \
numpy<2.0.0 \
pyyaml \
shapely \
scikit-image
# プロジェクトの推論コードと重みファイルをコピー
COPY . /workspace/
requirements.txt)paddlepaddle-gpu>=2.5.0 (CPUのみを使用する場合は paddlepaddle をインストール)paddleocr>=2.7.0opencv-python>=4.5.0numpy>=1.20.0pyyaml>=6.0本モデルは軽量なバックボーンネットワーク SVTR_LCNet(PPLCNetV3) に基づいて構築されているため、計算負荷が低く、推論速度が速いのが特徴です。以下のハードウェアデバイスでのローカルデプロイに非常に適しています:
モデル関連ファイル(inference.json、inference.pdiparams、jigmo_dict.txt)をローカルの指定ディレクトリにダウンロードした後、以下の Python コードでロードして推論を実行できます:
import cv2
from paddleocr import PaddleOCR
# PaddleOCR テキスト認識モデルの初期化
# 注意:rec_model_dir は inference.json / inference.pdiparams が保存されているフォルダを指定
# char_dict_path は 10.7 万字のコア辞書を指定
ocr = PaddleOCR(
use_angle_cls=False,
lang="ch",
det=False, # 入力が既に切り取られた単文字やテキスト行の画像である場合、検出をオフにできます
rec_model_dir="./", # モデルファイルが配置されているパス
char_dict_path="./jigmo_dict.txt", # カスタマイズされたメイン辞書
use_gpu=False, # GPU環境がある場合は True に設定
)
# 認識対象の異体字/古文字画像を読み込む
img_path = "path_to_rare_character_image.png"
result = ocr.ocr(img_path, det=False, rec=True)
# 認識結果を出力
for line in result:
print(f"認識テキスト: {line[0]}, 信頼度: {line[1]:.4f}")
본 프로젝트는 PaddlePaddle/PP-OCRv4_mobile_rec 베이스 모델을 기반으로 심층 미세 조정된 고성능 텍스트 인식 모델로, 특히 10만 7천 자의 초대형 희귀 문자 사전을 대상으로 전면적인 학습과 최적화를 거쳤습니다.
20250912)에서 유래합니다. Jigmo는 KAGE 시스템, Clipper, FontForge, TTX 등을 활용하여 생성된 자유롭고 무료인 한자 오픈소스 프로젝트로, CJK 통합 한자 및 확장 영역(제0면 BMP, 제1면 SMP, 제2면 SIP, 제3면 TIP 등의 초대형 평면 및 IVD 변형 데이터베이스 포함)을 완벽하게 포괄하며 최대 10만 7천여 개의 문자를 포함하여 고문자 및 희귀 문자 디지털화에 탄탄한 기반을 제공합니다.학습 로그와 검증 지표의 진화에 따라, 본 모델의 학습은 뛰어난 수렴 특성과 효율적인 리소스 관리를 보여줍니다:
학습 에포크 및 소요 시간:
총 학습 에포크 (epoch_num): 50 에포크 (최종적으로 best_epoch: 43에서 최적의 가중치를 저장함).
총 학습 시간: 약 18.5시간 (다중 GPU 분산 병렬 가속 학습 사용).
전력 소비량: 약 3.2 kWh (표준 GPU 워크스테이션 전력 소비량 기준 환산).
정확도 진화 및 수렴 성능:
acc)가 단계적으로 상승하였으며, 정규화 편집 거리(norm_edit_dis)와 손실 함수(loss)가 점진적으로 최적화되었습니다.best_epoch: 43)에서 검증 세트 기준 주목할 만한 acc: 98.82%(0.98819) 및 norm_edit_dis: 0.9884의 매우 높은 정확도를 달성했으며, 추론 속도 또한 우수한 성능을 보였습니다. 이는 10만 7천 자의 희귀 문자를 마주했을 때도 여전히 매우 낮은 오인식률을 유지함을 의미합니다.본 모델은 다중 GPU 분산 학습 및 정밀한 하이퍼파라미터 튜닝을 채택하였으며, 핵심 설정은 다음과 같습니다:
기본 아키텍처 (Architecture):
모델 유형 (model_type): rec (텍스트 인식)
알고리즘 (algorithm): SVTR_LCNet
백본 (Backbone): PPLCNetV3 (scale: 1.0)
넥 (Neck): SequenceEncoder (encoder_type: svtr, depth: 2, dims: 120, hidden_dims: 120, use_guide: True)
헤드 (Head): CTCHead (fc_decay: 1e-05)
옵티마이저 및 학습률 (Optimizer & LR):
옵티마이저: Adam (beta1: 0.9, beta2: 0.999)
학습률 스케줄러 (lr): Cosine 감쇠 전략 (learning_rate: 0.001, warmup_epoch: 5)
정규화 (regularizer): L2 (factor: 3e-05)
학습 하이퍼파라미터 (Global & Train Settings):
총 에포크 수 (epoch_num): 50 에포크
배치 크기 (batch_size_per_card): GPU 1개당 128 (다중 GPU 병렬 가속 지원)
최대 텍스트 길이 (max_text_length): 25
핵심 사전 경로 (character_dict_path): 맞춤 제작된 jigmo_dict.txt (10.7만 희귀 문자표)와 연결
inference.json & inference.pdiparams**: 극도로 압축 및 고정된 정적 그래프 추론 모델입니다. 모델을 로드할 때 뼈대 구축 및 가중치 복원에 사용됩니다.best_accuracy.pdiparams: 학습 과정 중 최적 정확도 가중치 백업 파일입니다 (검증 세트 acc: 98.82%인 에포크 43의 가중치에 해당).jigmo_dict.txt: 10만 7천 자 희귀 문자 매핑 핵심 사전. 모델이 출력한 숫자 ID를 실제 희귀 문자로 변환하는 데 사용되는 절대적인 핵심 파일입니다.config.yml: 네트워크 학습 시 아키텍처 및 하이퍼파라미터 설정 파일입니다.train.log: 과거 학습 로그 파일로, 전체 학습 주기에 걸친 Loss 감소 및 Acc 변화 궤적을 완벽하게 기록하고 있습니다.본 모델은 10만 7천 자의 초대형 희귀 문자 어휘를 고정하여 다음과 같은 수직적 학술 및 문헌 디지털화 분야에 매우 적합합니다:
컨테이너화된 프로덕션 환경에서 모델이 안정적으로 실행되도록 하려면 Docker Engine을 사용한 격리 배포를 권장합니다.
# PaddlePaddle 공식 GPU 실행 환경 이미지 기반
FROM paddlepaddle/paddle:2.5.2-gpu-cuda11.7-cudnn8.4
# 작업 디렉토리 설정
WORKDIR /workspace
# 시스템 종속성 패키지 설치
RUN apt-get update && apt-get install -y \
libgl1-mesa-glx \
libglib2.0-0 \
git \
&& rm -rf /var/lib/apt/lists/*
# Python 종속성 패키지 설치
RUN pip install --no-cache-dir --upgrade pip
RUN pip install --no-cache-dir \
paddleocr>=2.7.0 \
opencv-python==4.7.0.72 \
numpy<2.0.0 \
pyyaml \
shapely \
scikit-image
# 프로젝트 추론 코드 및 가중치 파일 복사
COPY . /workspace/
requirements.txt)paddlepaddle-gpu>=2.5.0 (CPU만 사용하는 경우 paddlepaddle 설치 가능)paddleocr>=2.7.0opencv-python>=4.5.0numpy>=1.20.0pyyaml>=6.0본 모델은 경량 백본 네트워크인 SVTR_LCNet (PPLCNetV3)을 기반으로 구축되었기 때문에 연산 부하가 적고 추론 속도가 빨라 다음 기기에서의 로컬 배포에 매우 적합합니다:
모델 관련 파일(inference.json, inference.pdiparams, jigmo_dict.txt)을 로컬 지정 디렉토리로 다운로드한 후, 다음 Python 코드를 통해 로드하고 추론할 수 있습니다:
import cv2
from paddleocr import PaddleOCR
# PaddleOCR 텍스트 인식 모델 초기화
# 주의: rec_model_dir은 inference.json / inference.pdiparams가 있는 폴더를 가리켜야 합니다.
# char_dict_path는 10.7만 자의 핵심 사전을 가리킵니다.
ocr = PaddleOCR(
use_angle_cls=False,
lang="ch",
det=False, # 입력이 이미 잘린 단일 문자나 텍스트 줄 이미지인 경우 감지를 끌 수 있습니다.
rec_model_dir="./", # 모델 파일이 있는 경로
char_dict_path="./jigmo_dict.txt", # 맞춤 설정된 메인 사전
use_gpu=False, # GPU 환경이 있는 경우 True로 설정
)
# 인식할 희귀 문자/고문자 이미지 읽기
img_path = "path_to_rare_character_image.png"
result = ocr.ocr(img_path, det=False, rec=True)
# 인식 결과 출력
for line in result:
print(f"인식된 텍스트: {line[0]}, 신뢰도: {line[1]:.4f}")
Dự án này là một mô hình nhận dạng văn bản hiệu suất cao được tinh chỉnh sâu dựa trên nền tảng PaddlePaddle/PP-OCRv4_mobile_rec, được huấn luyện toàn diện và tối ưu hóa đặc biệt cho bộ từ điển chữ hiếm cực lớn gồm 107.000 ký tự.
20250912). Jigmo là một dự án phông chữ CJK tự do và miễn phí được tạo ra thông qua hệ thống KAGE, Clipper, FontForge và TTX. Nó bao phủ toàn diện các vùng chữ Hán thống nhất CJK và các vùng mở rộng (bao gồm mặt phẳng BMP 0, SMP 1, SIP 2, TIP 3 và cơ sở dữ liệu biến thể IVD), chứa tới hơn 107.000 ký tự, tạo nền tảng vững chắc cho việc số hóa chữ cổ và chữ hiếm.Dựa trên nhật ký huấn luyện và sự tiến hóa của các chỉ số đánh giá, mô hình cho thấy đặc tính hội tụ xuất sắc và sử dụng tài nguyên hiệu quả:
Số Epoch và Thời gian huấn luyện:
Tổng số Epoch (epoch_num): 50 vòng (Lưu lại trọng số tối ưu nhất tại best_epoch: 43).
Tổng thời gian huấn luyện: Khoảng 18,5 giờ (Sử dụng huấn luyện tăng tốc phân tán đa GPU).
Tiêu thụ điện năng: Khoảng 3,2 kWh (Quy đổi dựa trên mức tiêu thụ điện của máy trạm GPU tiêu chuẩn).
Tiến hóa độ chính xác & Biểu hiện hội tụ:
acc) tăng dần theo kiểu bậc thang, khoảng cách chỉnh sửa chuẩn hóa (norm_edit_dis) và hàm mất mát (loss) được tối ưu hóa dần.best_epoch: 43), mô hình đã đạt được độ chính xác (acc) cực cao trên tập xác thực là 98,82% (0.98819) và norm_edit_dis là 0.9884, đồng thời hiệu suất suy luận rất xuất sắc. Điều này cho thấy mô hình vẫn duy trì tỷ lệ nhận dạng sai cực thấp ngay cả khi đối mặt với 107.000 chữ hiếm.Mô hình áp dụng huấn luyện phân tán đa thẻ GPU và tối ưu hóa siêu tham số tinh tế với cấu hình cốt lõi như sau:
Kiến trúc cơ bản (Architecture):
Loại mô hình (model_type): rec (Nhận dạng văn bản)
Kiến trúc thuật toán (algorithm): SVTR_LCNet
Mạng trục (Backbone): PPLCNetV3 (scale: 1.0)
Mạng cổ (Neck): SequenceEncoder (encoder_type: svtr, depth: 2, dims: 120, hidden_dims: 120, use_guide: True)
Mạng đầu (Head): CTCHead (fc_decay: 1e-05)
Trình tối ưu hóa & Tỷ lệ học (Optimizer & LR):
Trình tối ưu hóa: Adam (beta1: 0.9, beta2: 0.999)
Chiến lược tỷ lệ học (lr): Chiến lược giảm dần Cosine (learning_rate: 0.001, warmup_epoch: 5)
Thường quy hóa (regularizer): L2 (factor: 3e-05)
Siêu tham số huấn luyện (Global & Train Settings):
Tổng số vòng lặp (epoch_num): 50 vòng
Kích thước lô (batch_size_per_card): 128 mỗi thẻ (Hỗ trợ tăng tốc song song đa thẻ)
Chiều dài văn bản tối đa (max_text_length): 25
Đường dẫn từ điển cốt lõi (character_dict_path): Liên kết với jigmo_dict.txt tùy chỉnh (Bảng 107k chữ hiếm)
inference.json & inference.pdiparams**: Mô hình suy luận đồ thị tĩnh được nén và cố định hóa cao độ. Dùng để xây dựng khung và khôi phục trọng số khi tải mô hình.best_accuracy.pdiparams: Bản sao lưu trọng số có độ chính xác tối ưu trong quá trình huấn luyện (tương ứng với trọng số của Epoch 43 có acc đạt 98,82%).jigmo_dict.txt: Từ điển cốt lõi ánh xạ 107.000 ký tự hiếm. Thành phần cốt lõi tuyệt đối, dùng để chuyển đổi ID số do mô hình xuất ra thành chữ hiếm thực tế.config.yml: Tệp cấu hình kiến trúc và siêu tham số trong quá trình huấn luyện mạng.train.log: Tệp nhật ký huấn luyện lịch sử, ghi lại đầy đủ quá trình giảm Loss và biến động Acc trong toàn bộ chu kỳ.Mô hình này khóa chặt bộ từ vựng 107.000 chữ hiếm khổng lồ, đặc biệt phù hợp cho các lĩnh vực số hóa học thuật và tài liệu sau:
Để đảm bảo mô hình hoạt động ổn định trong môi trường sản xuất bằng container, khuyến nghị sử dụng Docker Engine để triển khai cách ly.
# Dựa trên image môi trường chạy GPU chính thức của PaddlePaddle
FROM paddlepaddle/paddle:2.5.2-gpu-cuda11.7-cudnn8.4
# Thiết lập thư mục làm việc
WORKDIR /workspace
# Cài đặt các gói phụ thuộc hệ thống
RUN apt-get update && apt-get install -y \
libgl1-mesa-glx \
libglib2.0-0 \
git \
&& rm -rf /var/lib/apt/lists/*
# Cài đặt các gói phụ thuộc Python
RUN pip install --no-cache-dir --upgrade pip
RUN pip install --no-cache-dir \
paddleocr>=2.7.0 \
opencv-python==4.7.0.72 \
numpy<2.0.0 \
pyyaml \
shapely \
scikit-image
# Sao chép mã suy luận của dự án và các tệp trọng số
COPY . /workspace/
requirements.txt)paddlepaddle-gpu>=2.5.0 (Nếu chỉ sử dụng CPU, có thể cài đặt paddlepaddle)paddleocr>=2.7.0opencv-python>=4.5.0numpy>=1.20.0pyyaml>=6.0Vì mô hình này được xây dựng dựa trên mạng trục nhẹ SVTR_LCNet (PPLCNetV3), chi phí tính toán thấp và tốc độ suy luận nhanh nên rất phù hợp để triển khai cục bộ trên các thiết bị phần cứng sau:
Sau khi tải các tệp liên quan đến mô hình (inference.json, inference.pdiparams, jigmo_dict.txt) về thư mục chỉ định trên máy, bạn có thể tải và chạy suy luận cục bộ thông qua mã Python sau:
import cv2
from paddleocr import PaddleOCR
# Khởi tạo mô hình nhận dạng văn bản PaddleOCR
# Lưu ý: Cần trỏ rec_model_dir đến thư mục chứa inference.json / inference.pdiparams
# char_dict_path trỏ đến từ điển cốt lõi gồm 107.000 chữ hiếm
ocr = PaddleOCR(
use_angle_cls=False,
lang="ch",
det=False, # Nếu đầu vào là ảnh cắt sẵn chứa 1 ký tự hoặc 1 dòng chữ, có thể tắt phần phát hiện (det)
rec_model_dir="./", # Đường dẫn đến thư mục chứa mô hình
char_dict_path="./jigmo_dict.txt", # Từ điển chính tùy chỉnh
use_gpu=False, # Nếu có môi trường GPU, thiết lập thành True
)
# Đọc hình ảnh chữ hiếm/chữ cổ cần nhận dạng
img_path = "path_to_rare_character_image.png"
result = ocr.ocr(img_path, det=False, rec=True)
# In kết quả nhận dạng
for line in result:
print(f"Văn bản nhận dạng: {line[0]}, Độ tin cậy: {line[1]:.4f}")