- 简体中文 (Simplified Chinese)
- Jigmo20250912-PaddleOCRv4 10.7万生僻字/古文字识别模型
- 繁體中文 (Traditional Chinese)
- Jigmo20250912-PaddleOCRv4 10.7萬罕見字/古文字識別模型
- English
- Jigmo20250912-PaddleOCRv4 107k Rare Character / Paleography Recognition Model
- 日本語 (Japanese)
- Jigmo20250912-PaddleOCRv4 10.7万 異体字・古文字認識モデル
- 한국어 (Korean)
- Jigmo20250912-PaddleOCRv4 10.7만 희귀 문자/고문자 인식 모델
- Tiếng Việt (Vietnamese)
- Mô hình nhận dạng 107.000 chữ hiếm/chữ cổ Jigmo20250912-PaddleOCRv4
- 📖 Giới thiệu mô hình & Bối cảnh
- 📈 Quá trình huấn luyện, Tiêu thụ tài nguyên & Phân tích độ chính xác Acc
- ⚙️ Chi tiết tham số cấu hình huấn luyện
- 🗂️ Mô tả các tệp cốt lõi
- 🎯 Phạm vi áp dụng & Kịch bản
- 🐳 Cấu hình môi trường & Phụ thuộc Docker Engine
- 🖥️ Các loại thiết bị phù hợp để triển khai
- 🛠️ Hướng dẫn triển khai & Sử dụng cục bộ
- 📖 Giới thiệu mô hình & Bối cảnh
简体中文 (Simplified Chinese)
Jigmo20250912-PaddleOCRv4 10.7万生僻字/古文字识别模型
📖 模型与背景简介
本项目是一个基于 PaddlePaddle/PP-OCRv4_mobile_rec 基础模型深度微调的高性能文本识别模型,专门针对 10.7万字 的超大生僻字字典进行了全量训练与适配。
- Jigmo 项目背景:本模型的词表与训练基底源自开源的 Jigmo(字雲) 字体项目(本模型使用版本为
20250912)。Jigmo 是一个自由且无偿的汉字开源字体项目,主要利用 KAGE 系统、Clipper、FontForge 以及 TTX 生成,完整覆盖了中日韩统一表意文字及其扩展区(包括第 0 面 BMP、第 1 面 SMP、第 2 面 SIP、第 3 面 TIP 等超大平面及 IVD 变体数据库),包含多达 10.7 万个汉字及非汉字字符,为古文字与生僻字数字化提供了坚实的字体基础。
📈 训练过程、资源消耗与 Acc 准确率分析
根据训练日志与验证指标的演变,本模型的训练表现出极佳的收敛特性与高效的资源开销:
训练轮次与时长:
- **总训练轮次 (
epoch_num)**:50 轮(最终在best_epoch: 43取得最优权重保存)。 - 总训练时长:约 18.5 小时(多卡分布式并行加速训练)。
- 训练耗电量:约 3.2 kWh(千瓦时,基于标准 GPU 工作站功耗折算)。
- **总训练轮次 (
准确率演变与收敛表现:
- 初期探索阶段:在训练刚开始的前几个 Epoch 中,由于 10.7 万超大词表的庞大标签空间约束,模型的字符识别准确率 (
acc) 在局部步数中呈现阶梯式爬升,归一化编辑距离 (norm_edit_dis) 与损失函数 (loss) 逐步优化。 - 中期突破阶段:随着训练推进至 Epoch 10 附近,模型在部分批次上的验证准确率已突破 **47% ~ 53%**,展现出强大的特征学习能力。
- 收敛与最优结果:经过多轮迭代后,在最佳保存轮次(
best_epoch: 43)时,模型在验证集上取得了令人瞩目的acc: 98.82%(0.98819) 以及norm_edit_dis: 0.9884的极高精度,推理速度表现优异。这意味着模型在面对 10.7 万生僻字时依然保持了极低的误识率。
- 初期探索阶段:在训练刚开始的前几个 Epoch 中,由于 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 环境配置与依赖
为了确保模型在容器化生产环境中稳定运行,推荐使用 Docker Engine 进行隔离部署。
1. Dockerfile 基础配置示例
# 基于 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/
2. 核心依赖清单 (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) 构建,计算开销低、推理速度快,非常适合在以下硬件设备上进行本地部署:
- **普通办公电脑与笔记本 (CPU)**:在纯 CPU 环境下也能流畅运行,适合单张图片或小批量古籍单字/文本行的本地离线识别。
- 边缘计算设备与本地服务器:如图书馆、博物馆、文史研究室内部部署的本地化离线服务器或工控机,保障敏感古籍文献的数据安全。
- GPU 高性能工作站 / 云服务器:支持单卡或多卡 GPU 并行推理,适合对大规模海量古籍善本扫描件进行自动化流水线高并发识别。
🛠️ 本地部署与使用方法
将模型相关文件(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}")
繁體中文 (Traditional Chinese)
Jigmo20250912-PaddleOCRv4 10.7萬罕見字/古文字識別模型
📖 模型與背景簡介
本專案是一個基於 PaddlePaddle/PP-OCRv4_mobile_rec 基礎模型深度微調的高效能文字識別模型,專門針對 10.7萬字 的超大罕見字字典進行了全量訓練與適配。
- Jigmo 專案背景:本模型的詞表與訓練基底源自開源的 Jigmo(字雲) 字體專案(本模型使用版本為
20250912)。Jigmo 是一個自由且無償的漢字開源字體專案,主要利用 KAGE 系統、Clipper、FontForge 以及 TTX 生成,完整覆蓋了中日韓統一表意文字及其擴展區(包括第 0 面 BMP、第 1 面 SMP、第 2 面 SIP、第 3 面 TIP 等超大平面及 IVD 變體資料庫),包含多達 10.7 萬個漢字及非漢字字元,為古文字與罕見字數位化提供了堅實的字體基礎。
📈 訓練過程、資源消耗與 Acc 準確率分析
根據訓練日誌與驗證指標的演變,本模型的訓練表現出極佳的收斂特性與高效的資源開銷:
訓練輪次與時長:
**總訓練輪次 (
epoch_num)**:50 輪(最終在best_epoch: 43取得最佳權重保存)。總訓練時長:約 18.5 小時(多卡分散式並行加速訓練)。
訓練耗電量:約 3.2 kWh(千瓦時,基於標準 GPU 工作站功耗折算)。
準確率演變與收斂表現:
- 初期探索階段:在訓練剛開始的前幾個 Epoch 中,由於 10.7 萬超大詞表的龐大標籤空間約束,模型的字元識別準確率 (
acc) 在局部步數中呈現階梯式爬升,歸一化編輯距離 (norm_edit_dis) 與損失函數 (loss) 逐步優化。 - 中期突破階段:隨著訓練推進至 Epoch 10 附近,模型在部分批次上的驗證準確率已突破 **47% ~ 53%**,展現出強大的特徵學習能力。
- 收斂與最佳結果:經過多輪迭代後,在最佳保存輪次(
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 環境配置與依賴
為了確保模型在容器化生產環境中穩定執行,推薦使用 Docker Engine 進行隔離部署。
1. Dockerfile 基礎配置範例
# 基於 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/
2. 核心依賴清單 (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) 建構,計算開銷低、推理速度快,非常適合在以下硬體設備上進行本地部署:
- **普通辦公電腦與筆記型電腦 (CPU)**:在純 CPU 環境下也能流暢執行,適合單張圖片或小批量古籍單字/文本行的本地離線識別。
- 邊緣運算設備與本地伺服器:如圖書館、博物館、文史研究室內部部署的在地化離線伺服器或工控機,保障敏感古籍文獻的資料安全。
- GPU 高效能工作站 / 雲端伺服器:支援單卡或多卡 GPU 並行推理,適合對大規模海量古籍善本掃描件進行自動化流水線高併發識別。
🛠️ 本地部署與使用方法
將模型相關檔案(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}")
English
Jigmo20250912-PaddleOCRv4 107k Rare Character / Paleography Recognition Model
📖 Model & Background Introduction
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.
- Jigmo Project Background: The vocabulary and training foundation of this model originate from the open-source Jigmo font project (using version
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.
📈 Training Process, Resource Consumption & Accuracy Analysis
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 atbest_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:
- Early Exploration Stage: During the initial epochs, constrained by the massive label space of the 107k vocabulary, the character accuracy (
acc) climbed in a step-like manner, while the normalized edit distance (norm_edit_dis) andlossgradually optimized. - Mid-stage Breakthrough: Around Epoch 10, batch-level validation accuracy quickly broke through 47% - 53%, showcasing robust feature learning capabilities.
- Optimal Convergence: After multiple iterations, at the best checkpoint (
best_epoch: 43), the model achieved a remarkable validationaccof 98.82% (0.98819) and anorm_edit_disof 0.9884, alongside excellent inference speed. This indicates an extremely low misrecognition rate even when facing 107,000 rare characters.
⚙️ Detailed Training Configurations
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_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:
Optimizer:
Adam(beta1: 0.9,beta2: 0.999)Learning Rate (
lr):Cosinedecay strategy (learning_rate: 0.001,warmup_epoch: 5)Regularizer:
L2(factor: 3e-05)Global & Train Settings:
Total Epochs (
epoch_num): 50Batch Size (
batch_size_per_card): 128 per card (supports multi-GPU acceleration)Max Text Length (
max_text_length): 25Character Dict Path (
character_dict_path): Bound to the customizedjigmo_dict.txt(107k rare characters)
🗂️ Core File Descriptions
- **
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 validationacc: 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.
🎯 Scope of Application
Locked into a massive 107k rare character vocabulary, this model is highly suitable for vertical academic and document digitization scenarios:
- Ancient Scripts (Oracle Bone, Bronze, Bamboo Slips): Transcription and modern standardized recognition of paleographic scripts.
- Rare Historical Books & Local Chronicles: Identifying obscure CJK characters and variants that general large multimodal models fail to recognize.
- Academic Research: Acting as a reliable auxiliary tool for paleographers to provide robust low-level single-character/text-line recognition.
🐳 Docker Engine Configuration & Dependencies
For stable deployment in containerized production environments, using Docker Engine is highly recommended.
1. Sample Dockerfile
# 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/
2. Core Dependencies (requirements.txt)
paddlepaddle-gpu>=2.5.0(Installpaddlepaddleif only using CPU)paddleocr>=2.7.0opencv-python>=4.5.0numpy>=1.20.0pyyaml>=6.0
🖥️ Suitable Device Types for Deployment
Built upon the lightweight SVTR_LCNet (PPLCNetV3) backbone, this model has low computational overhead and fast inference speeds, making it ideal for:
- Standard Office PCs & Laptops (CPU): Runs smoothly in pure CPU environments; suitable for offline recognition of single images or small batches of ancient characters.
- Edge Devices & Local Servers: Deployable on local offline servers in libraries or museums to ensure the data security of sensitive historical documents.
- High-Performance GPU Workstations / Cloud Servers: Supports single/multi-GPU parallel inference, perfect for automated, high-concurrency recognition pipelines for massive digitized book archives.
🛠️ Local Deployment & Usage
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}")
日本語 (Japanese)
Jigmo20250912-PaddleOCRv4 10.7万 異体字・古文字認識モデル
📖 モデルと背景の概要
本プロジェクトは、PaddlePaddle/PP-OCRv4_mobile_rec ベースモデルをディープファインチューニングした高性能テキスト認識モデルであり、10万7千字を超える超巨大な異体字・生僻字(難読漢字)辞書に対してフル学習と適応を行っています。
- Jigmoプロジェクトの背景:本モデルの語彙と学習基盤は、オープンソースの Jigmo(字雲) フォントプロジェクト(使用バージョン:
20250912)に由来します。Jigmoは、KAGEシステム、Clipper、FontForge、TTX等を用いて生成された自由かつ無償の漢字オープンソースフォントであり、CJK統合漢字とその拡張領域(第0面BMP、第1面SMP、第2面SIP、第3面TIP等の超巨大平面およびIVDバリアントデータベースを含む)を完全に網羅しています。最大10万7千文字以上の漢字・非漢字を収録し、古文字およびレア文字のデジタル化に強固な基盤を提供しています。
📈 学習プロセス、リソース消費、Acc 精度分析
学習ログと検証指標の推移に基づき、本モデルは優れた収束特性と効率的なリソース消費を示しています:
学習エポックと時間:
**総学習エポック (
epoch_num)**:50 エポック(最終的にbest_epoch: 43で最適な重みを保存)。総学習時間:約 18.5 時間(マルチGPU分散並列学習を使用)。
消費電力:約 3.2 kWh(標準的な GPU ワークステーションの電力消費に基づく概算)。
精度の推移と収束状況:
- 初期探索段階:学習開始直後の数エポックでは、10万7千字という巨大なラベル空間の制約を受けつつも、文字認識精度 (
acc) が段階的に上昇し、正規化編集距離 (norm_edit_dis) と損失関数 (loss) が徐々に最適化されました。 - 中期突破段階:エポック 10 付近まで学習が進むにつれ、一部のバッチにおける検証精度が 47% ~ 53% を突破し、強力な特徴学習能力を発揮しました。
- 収束と最適結果:多数の反復を経て、最良の保存エポック(
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 環境設定と依存関係
コンテナ化された本番環境でモデルを安定して稼働させるため、Docker Engine を用いた分離デプロイメントを推奨します。
1. Dockerfile 基本構成の例
# 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/
2. コア依存関係リスト (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) に基づいて構築されているため、計算負荷が低く、推論速度が速いのが特徴です。以下のハードウェアデバイスでのローカルデプロイに非常に適しています:
- **一般的なオフィス用 PC およびノート PC (CPU)**:純粋な CPU 環境でもスムーズに動作し、単一の画像や小ロットの古籍文字/テキスト行のローカルオフライン認識に適しています。
- エッジコンピューティングデバイスおよびローカルサーバー:図書館、博物館、文史研究室の内部に設置されたローカルオフラインサーバーや産業用PC。機密性の高い歴史的文献データのセキュリティを保証します。
- GPU 高性能ワークステーション / クラウドサーバー:単一またはマルチ GPU による並列推論をサポートし、大規模な古籍スキャンデータに対する自動化パイプラインでの高並行認識処理に適しています。
🛠️ ローカルデプロイと使用方法
モデル関連ファイル(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}")
한국어 (Korean)
Jigmo20250912-PaddleOCRv4 10.7만 희귀 문자/고문자 인식 모델
📖 모델 및 배경 소개
본 프로젝트는 PaddlePaddle/PP-OCRv4_mobile_rec 베이스 모델을 기반으로 심층 미세 조정된 고성능 텍스트 인식 모델로, 특히 10만 7천 자의 초대형 희귀 문자 사전을 대상으로 전면적인 학습과 최적화를 거쳤습니다.
- Jigmo 프로젝트 배경: 본 모델의 단어장과 학습 기반은 오픈소스 Jigmo(字雲) 글꼴 프로젝트(사용 버전:
20250912)에서 유래합니다. Jigmo는 KAGE 시스템, Clipper, FontForge, TTX 등을 활용하여 생성된 자유롭고 무료인 한자 오픈소스 프로젝트로, CJK 통합 한자 및 확장 영역(제0면 BMP, 제1면 SMP, 제2면 SIP, 제3면 TIP 등의 초대형 평면 및 IVD 변형 데이터베이스 포함)을 완벽하게 포괄하며 최대 10만 7천여 개의 문자를 포함하여 고문자 및 희귀 문자 디지털화에 탄탄한 기반을 제공합니다.
📈 학습 과정, 리소스 소모 및 Acc 정확도 분석
학습 로그와 검증 지표의 진화에 따라, 본 모델의 학습은 뛰어난 수렴 특성과 효율적인 리소스 관리를 보여줍니다:
학습 에포크 및 소요 시간:
총 학습 에포크 (
epoch_num): 50 에포크 (최종적으로best_epoch: 43에서 최적의 가중치를 저장함).총 학습 시간: 약 18.5시간 (다중 GPU 분산 병렬 가속 학습 사용).
전력 소비량: 약 3.2 kWh (표준 GPU 워크스테이션 전력 소비량 기준 환산).
정확도 진화 및 수렴 성능:
- 초기 탐색 단계: 학습 초기 몇 번의 에포크 동안 10만 7천 자의 방대한 레이블 공간 제약 속에서도 문자 인식 정확도(
acc)가 단계적으로 상승하였으며, 정규화 편집 거리(norm_edit_dis)와 손실 함수(loss)가 점진적으로 최적화되었습니다. - 중기 돌파 단계: 에포크 10 근처로 학습이 진행됨에 따라 일부 배치에서의 검증 정확도가 47% ~ 53%를 돌파하며 강력한 특징 학습 능력을 입증했습니다.
- 수렴 및 최적 결과: 다수의 반복을 거친 후 최적의 저장 에포크(
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 환경 설정 및 종속성
컨테이너화된 프로덕션 환경에서 모델이 안정적으로 실행되도록 하려면 Docker Engine을 사용한 격리 배포를 권장합니다.
1. Dockerfile 기본 설정 예시
# 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/
2. 핵심 종속성 목록 (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)을 기반으로 구축되었기 때문에 연산 부하가 적고 추론 속도가 빨라 다음 기기에서의 로컬 배포에 매우 적합합니다:
- 일반 사무용 PC 및 노트북 (CPU): 순수 CPU 환경에서도 원활하게 실행되며, 단일 이미지나 소규모 고서 문자/텍스트 줄의 로컬 오프라인 인식에 적합합니다.
- 엣지 컴퓨팅 장치 및 로컬 서버: 도서관, 박물관, 문사 연구실 내부에 배포된 로컬 오프라인 서버나 산업용 PC로 민감한 역사 문헌 데이터의 보안을 보장합니다.
- GPU 고성능 워크스테이션 / 클라우드 서버: 단일 또는 다중 GPU 병렬 추론을 지원하여 대규모 고서 스캔본의 자동화된 파이프라인 고동시성 인식에 적합합니다.
🛠️ 로컬 배포 및 사용 방법
모델 관련 파일(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}")
Tiếng Việt (Vietnamese)
Mô hình nhận dạng 107.000 chữ hiếm/chữ cổ Jigmo20250912-PaddleOCRv4
📖 Giới thiệu mô hình & Bối cảnh
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ự.
- Bối cảnh dự án Jigmo: Từ vựng và nền tảng huấn luyện của mô hình này bắt nguồn từ dự án phông chữ mã nguồn mở Jigmo (phiên bản sử dụng là
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.
📈 Quá trình huấn luyện, Tiêu thụ tài nguyên & Phân tích độ chính xác Acc
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ạibest_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ụ:
- Giai đoạn khám phá ban đầu: Trong những Epoch đầu tiên, bị ràng buộc bởi không gian nhãn khổng lồ của bộ từ vựng 107k, độ chính xác nhận dạng (
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. - Giai đoạn bứt phá trung gian: Khi quá trình huấn luyện tiến đến khoảng Epoch 10, độ chính xác trên tập xác thực của một số batch đã vượt qua 47% ~ 53%, thể hiện năng lực học đặc trưng mạnh mẽ.
- Hội tụ & Kết quả tối ưu: Sau nhiều vòng lặp, ở checkpoint tốt nhất (
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_dislà 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.
⚙️ Chi tiết tham số cấu hình huấn luyện
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_LCNetMạ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ầnCosine(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òngKí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ớijigmo_dict.txttùy chỉnh (Bảng 107k chữ hiếm)
🗂️ Mô tả các tệp cốt lõi
- **
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ỳ.
🎯 Phạm vi áp dụng & Kịch bản
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:
- Chữ cổ (Giáp cốt văn, Kim văn, Giản Hán, v.v.): Phiên âm chuẩn hóa và nhận dạng hiện đại đối với các kiểu chữ cổ.
- Quét sách cổ quý hiếm & Địa chí: Nhận diện hàng loạt các chữ Hán và chữ dị thể khó mà các mô hình ngôn ngữ lớn thông thường không thể nhận ra trong sách cổ lịch sử.
- Nghiên cứu học thuật & Đối chiếu: Đóng vai trò là công cụ hỗ trợ đáng tin cậy cho các nhà nghiên cứu cổ văn, cung cấp khả năng nhận dạng dòng/ký tự đơn cấp thấp với độ chính xác cao.
🐳 Cấu hình môi trường & Phụ thuộc Docker Engine
Để đả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.
1. Ví dụ cấu hình cơ bản Dockerfile
# 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/
2. Danh sách phụ thuộc cốt lõi (requirements.txt)
paddlepaddle-gpu>=2.5.0(Nếu chỉ sử dụng CPU, có thể cài đặtpaddlepaddle)paddleocr>=2.7.0opencv-python>=4.5.0numpy>=1.20.0pyyaml>=6.0
🖥️ Các loại thiết bị phù hợp để triển khai
Vì 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:
- Máy tính văn phòng & Laptop thông thường (CPU): Có thể chạy mượt mà trên môi trường thuần CPU, thích hợp để nhận dạng ngoại tuyến hình ảnh đơn hoặc số lượng ít các dòng văn bản/chữ cổ cục bộ.
- Thiết bị Edge Computing & Máy chủ cục bộ: Các máy chủ ngoại tuyến hoặc máy tính công nghiệp được triển khai trong nội bộ thư viện, bảo tàng, phòng nghiên cứu văn sử nhằm đảm bảo an toàn dữ liệu của các tài liệu cổ nhạy cảm.
- Máy trạm GPU hiệu suất cao / Máy chủ đám mây: Hỗ trợ suy luận song song GPU đơn hoặc đa GPU, lý tưởng cho đường ống nhận dạng tự động đồng thời cao đối với lượng lớn bản quét sách cổ.
🛠️ Hướng dẫn triển khai & Sử dụng cục bộ
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}")
Model tree for doang/Jigmo20250912-PaddleOCRv4
Base model
PaddlePaddle/PP-OCRv4_mobile_rec