Skip to content

Databaker-tech/tibetocr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6,835 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

藏文 OCR 新手使用指南

本指南面向第一次接触本项目的用户。从下载源码到在浏览器里识别图片,一步一步跟着做就行。

全程不需要训练模型,直接用已经训练好的 M5 模型推理。


准备工作

操作之前确认你有:

  • 一台 Linux 服务器(推荐 Ubuntu 20.04+),或 Windows / macOS
  • NVIDIA 显卡(≥10 GB 显存)+ CUDA 11.8 或 12.0;没有显卡也行,用 CPU 模式(慢一些)
  • 已经装好 Miniconda 或 Anaconda(没装的话先去 https://docs.conda.io/projects/miniconda/en/latest/ 装一下)
  • 网络能访问 GitHub 和百度对象存储

第 1 步:下载项目源码

打开终端,进入你想要存放项目的目录,运行:

git clone https://github.com/<your-org>/paddleocr_db.git
cd paddleocr_db

后面所有命令都假定你已经在 paddleocr_db/ 目录里。


第 2 步:一键搭建环境

项目提供了一键部署脚本,根据你的系统选一个跑:

Linux

bash deploy/deploy_linux.sh --cuda 11.8

如果你装的是 CUDA 12,改成 --cuda 12.0;没显卡用 --cpu

Windows(PowerShell)

Set-ExecutionPolicy -Scope Process Bypass -Force
.\deploy\deploy_windows.ps1 -Cuda 11.8

macOS

bash deploy/deploy_macos.sh

脚本会自动完成:

  1. 创建一个名叫 paddleocr_tibetan 的 conda 环境
  2. 安装 PaddlePaddle 和项目依赖
  3. 下载预训练权重

整个过程大约 5-10 分钟,看到 [OK] 部署完成 就好了。


第 3 步:下载推理模型

需要下载两个模型:识别模型(M5)检测模型,放到项目根目录下。

识别模型(M5,约 209 MB)— 必须手动下载

国内用户(ModelScope):

from modelscope import snapshot_download
snapshot_download(
    'a237401/tibetocr-m5',
    local_dir='PP-OCRv5_server_rec_infer_openpecha_ch_en'
)

国外用户(HuggingFace):

pip install huggingface_hub
python -c "
from huggingface_hub import snapshot_download
snapshot_download(
    'Databaker/tibetocr-m5',
    local_dir='PP-OCRv5_server_rec_infer_openpecha_ch_en'
)
"

检测模型 — 自动下载

首次运行时 PaddleX 会自动下载检测模型,无需手动操作。

测试集(可选,约 3.7 GB)

如需在本地评测模型效果,可下载交付测试集:

国内用户(ModelScope):

from modelscope import snapshot_download
snapshot_download(
    'a237401/tibetocr-delivery-testset',
    local_dir='交付测试集'
)

国外用户(HuggingFace):

from huggingface_hub import snapshot_download
snapshot_download(
    'Databaker/tibetocr-delivery-testset',
    repo_type='dataset',
    local_dir='交付测试集'
)

测试集包含四个子集(zip 格式):pure_tibetantibetan_chn_mixedtibetan_chn_eng_mixedtibetan_dirty,下载后需解压。

下载完成后目录结构如下:

tibetocr/
├── PP-OCRv5_server_det_infer/                 # 检测模型(自动下载)
├── PP-OCRv5_server_rec_infer_openpecha_ch_en/ # 识别模型(手动下载)
└── 交付测试集/                                 # 测试集(可选)

第 4 步:启动 Gradio Web 界面

4.1 选一张空闲的 GPU

先看一下显卡占用:

nvidia-smi

找一张 Memory-Usage 空闲超过 10 GB 的卡,记下它的编号(最左边的数字)。

4.2 改配置(可选)

如果想换 GPU 卡号或端口,编辑 deploy/app.env

CUDA_VISIBLE_DEVICES=4       # 改成你选的卡号
APP_PORT=7860                # 改成你想用的端口

4.3 启动服务

bash deploy/start_app.sh

看到下面这样就说明启动成功:

[OK] 已启动,PID=xxxxx
     访问: http://<服务器IP>:7860

第一次启动需要 30-60 秒(模型加载)。

4.4 关闭服务

bash deploy/stop_app.sh

第 5 步:在浏览器里使用

5.1 打开页面

同一台机器或同一内网的浏览器里访问:

http://<服务器IP>:7860

例如:http://192.168.1.100:7860(替换为你的服务器实际 IP)

5.2 登录

弹出登录框输入:

  • 账号:admin
  • 密码:admin123

想改密码?编辑 app.py 第 26 行的 AUTH = ("admin", "admin123"),重启服务即可。

5.3 使用三个 Tab

Tab 1:单图识别(最常用)

  1. 点击"上传图片"区域,选一张藏文文档图(PNG 或 JPG)
  2. 点击"开始识别"按钮
  3. 等待几秒,右侧会显示:
    • 检测结果:原图上画好红色检测框
    • 识别文本:每行文本一条
    • 统计:行数、平均置信度、耗时
  4. 想保存结果?点最下面的"下载结果包",会得到一个 ZIP 包含 PNG / TXT / JSON

Tab 2:批量识别

  1. 一次拖多张图片到上传框
  2. 点击"开始批量识别"
  3. 处理完后下载 ZIP 包,里面是每张图的结果

Tab 3:PDF 识别

  1. 上传一个 PDF(最多 20 页)
  2. 滑动"渲染 DPI"调清晰度(默认 200 即可,太高会很慢)
  3. 点击"开始解析"
  4. 下载 ZIP 包,里面是每一页的结果

第 6 步:用代码调用(高级用法)

如果你想在自己的 Python 脚本里用这个 OCR:

from inference import TibetanOCRPipeline

# 初始化(只需要一次)
pipeline = TibetanOCRPipeline()

# 识别一张图
result = pipeline.predict_image("我的图.png")

print(result.to_text())     # 拼成大段文字
print(result.texts)         # 一行一行的列表
print(result.scores)        # 每行的置信度
print(result.boxes)         # 每行的检测框坐标

# 保存可视化(原图+红框)
from PIL import Image
Image.fromarray(result.annotated_image).save("带框的图.png")

# 识别 PDF
results = pipeline.predict_pdf("我的文档.pdf")
for i, res in enumerate(results, 1):
    print(f"--- 第 {i} 页 ---")
    print(res.to_text())

第 7 步:通过 Claude Code Skill 调用(AI 辅助操作)

如果你在使用 Claude Code,可以用自然语言触发 OCR 操作,无需手动写命令。

识别图片 / PDF

在 Claude Code 对话框输入:

/tibetocr-ocr

然后说明你的需求,例如:

  • "识别这张图片 /path/to/image.jpg"
  • "批量识别 /data/images/ 目录下所有图片,结果保存到 /data/results/"
  • "识别这个 PDF /path/to/doc.pdf"

Claude 会自动调用 Skill API 完成识别并输出结果。

一键部署

在 agent(推荐claude code) 对话框输入:

/tibetocr-deploy

agent 会自动判断你的网络环境(国内/国外),从对应平台(Gitee/GitHub、ModelScope/HuggingFace)拉取代码和模型,完成完整部署。

Skill 文件位置:

  • /data/zhouziqi/.claude/skills/tibetocr-ocr/SKILL.md
  • /data/zhouziqi/.claude/skills/tibetocr-deploy/SKILL.md

常见问题

Q1. 启动报"端口 7860 已被占用"

端口被其他程序占了。改 deploy/app.env 里的 APP_PORT(比如改成 8888),重启。

Q2. 启动报"未检测到 conda"

先装 Miniconda:https://docs.conda.io/projects/miniconda/en/latest/

Q3. 启动后浏览器打不开

检查三件事:

  1. 服务进程还活着吗?ps aux | grep app.py
  2. 端口监听了吗?ss -tnlp | grep 7860
  3. 防火墙开了吗?同事的电脑能 ping 通服务器吗?

Q4. 上传图片报错 / 显存爆掉

显存不够。换一张更空闲的 GPU(改 deploy/app.env 里的 CUDA_VISIBLE_DEVICES),重启服务。

Q5. 识别效果不好

  • 图片太模糊:截图清晰一些
  • 经文极长:本项目专门优化过长条形经文,但太极端的会被截断
  • 文字方向不是水平:目前只支持水平排列,旋转过的文字效果会差

Q6. 想知道服务运行状态

tail -f logs/app.log        # 实时看日志
cat logs/app.pid            # 看进程号

Q7. 想长期稳定运行(崩溃自动重启)

跑一次这个脚本就能跑成 systemd 服务:

bash deploy/install_systemd_user.sh

之后用 systemctl --user restart tibetan_ocr_app 之类的命令管理。


速查命令

操作 命令
启动 bash deploy/start_app.sh
停止 bash deploy/stop_app.sh
重启 bash deploy/stop_app.sh && bash deploy/start_app.sh
看日志 tail -f logs/app.log
访问 浏览器开 http://<服务器IP>:7860
账号 admin / admin123

完整流程速览

git clone <仓库>                          ← 第 1 步
cd paddleocr_db_liufan
bash deploy/deploy_linux.sh --cuda 11.8   ← 第 2 步:搭环境
# 把两个 _infer 模型目录放进项目根目录    ← 第 3 步
vim deploy/app.env                        ← 第 4.2 步:改 GPU(可选)
bash deploy/start_app.sh                  ← 第 4.3 步:启动
# 浏览器开 http://服务器IP:7860            ← 第 5 步:用起来
# admin / admin123 登录

跑通一次后,以后只需要 bash deploy/start_app.sh 一句就好。

About

No description, website, or topics provided.

Resources

License

Apache-2.0, Unknown licenses found

Licenses found

Apache-2.0
LICENSE
Unknown
LICENSE-DATA

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors