Skip to content

Commit 595b8a2

Browse files
committed
feat: Add command line support
1 parent 4ef618d commit 595b8a2

12 files changed

Lines changed: 585 additions & 14 deletions

File tree

.github/workflows/rust.yml

Lines changed: 52 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ name: Rust
33
on:
44
push:
55
branches: [ "main" ]
6+
tags:
7+
- 'v*'
68
pull_request:
79
branches: [ "main" ]
810

@@ -11,12 +13,56 @@ env:
1113

1214
jobs:
1315
build:
14-
1516
runs-on: ubuntu-latest
17+
steps:
18+
- uses: actions/checkout@v4
19+
- name: Build
20+
run: cargo build --verbose
21+
- name: Run tests
22+
run: cargo test --verbose
1623

24+
release:
25+
name: Release
26+
needs: build
27+
if: startsWith(github.ref, 'refs/tags/v')
28+
runs-on: ${{ matrix.os }}
29+
strategy:
30+
matrix:
31+
include:
32+
- os: ubuntu-latest
33+
artifact_name: ocr
34+
asset_name: ocr-linux-amd64
35+
- os: windows-latest
36+
artifact_name: ocr.exe
37+
asset_name: ocr-windows-amd64.exe
38+
- os: macos-latest
39+
artifact_name: ocr
40+
asset_name: ocr-macos-amd64
41+
1742
steps:
18-
- uses: actions/checkout@v4
19-
- name: Build
20-
run: cargo build --verbose
21-
- name: Run tests
22-
run: cargo test --verbose
43+
- uses: actions/checkout@v4
44+
45+
- name: Setup Rust
46+
uses: actions-rs/toolchain@v1
47+
with:
48+
toolchain: stable
49+
override: true
50+
51+
- name: Build Release Binary
52+
run: cargo build --release --bin ocr
53+
54+
- name: Rename Binary
55+
shell: bash
56+
run: |
57+
if [ "${{ matrix.os }}" = "windows-latest" ]; then
58+
cp target/release/${{ matrix.artifact_name }} ${{ matrix.asset_name }}
59+
else
60+
cp target/release/${{ matrix.artifact_name }} ${{ matrix.asset_name }}
61+
fi
62+
63+
- name: Upload Release Asset
64+
uses: softprops/action-gh-release@v1
65+
with:
66+
files: ${{ matrix.asset_name }}
67+
env:
68+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,8 @@
11
/target
2+
**/*.rs.bk
3+
Cargo.lock
4+
*.pdb
5+
.idea/
6+
.vscode/
7+
*.exe
8+
ocr-*-amd64*

Cargo.lock

Lines changed: 86 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,24 @@ exclude = [
3030
[lib]
3131
crate-type = ["lib", "cdylib"]
3232

33+
[[bin]]
34+
name = "ocr"
35+
path = "src/main.rs"
36+
3337
[dependencies]
3438
image = "0.25.6"
3539
imageproc = "0.25"
3640
ndarray = { version = "0.16", features = ["rayon", "serde"] }
3741
thiserror = "2"
3842
log = "0.4"
3943
env_logger = "0.10"
40-
4144
crossbeam-channel = "0.5"
4245
once_cell = "1.17"
4346

47+
clap = { version = "4.5", features = ["derive"] }
48+
serde = { version = "1.0", features = ["derive"] }
49+
serde_json = "1.0"
50+
4451
[dependencies.mnn]
4552
git = "https://github.com/zibo-chen/mnn-rs.git"
4653
features = []

README.ja.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ PaddleOCRモデルをベースにしたRustで実装された軽量で効率的
1313
- **高性能**: MNN推論フレームワークで最適化
1414
- **最小限の依存関係**: 軽量で容易に統合可能
1515
- **カスタマイズ可能**: 異なるユースケース向けの調整可能なパラメータ
16+
- **コマンドラインツール**: OCR認識のための簡単なコマンドラインインターフェース
1617

1718
## インストール
1819

@@ -37,6 +38,32 @@ branch = "main"
3738
- MNN形式に変換された事前学習済みPaddleOCRモデル
3839
- テキスト認識用の文字セットファイル
3940

41+
## コマンドラインツール
42+
43+
このライブラリには、直接OCR認識を行うための組み込みコマンドラインツールが提供されています:
44+
45+
```bash
46+
# 基本的な使用法
47+
./ocr -p path/to/image.jpg
48+
49+
# JSON形式で出力(詳細情報と位置を含む)
50+
./ocr -p path/to/image.jpg -m json
51+
52+
# 詳細なログ情報を表示
53+
./ocr -p path/to/image.jpg -v
54+
```
55+
56+
### コマンドラインオプション
57+
58+
```
59+
オプション:
60+
-p, --path <IMAGE_PATH> 認識する画像のパス
61+
-m, --mode <MODE> 出力モード: json(詳細) または text(シンプル) [デフォルト: text]
62+
-v, --verbose 詳細なログ情報を表示するかどうか
63+
-h, --help ヘルプ情報を表示
64+
-V, --version バージョン情報を表示
65+
```
66+
4067
## 使用例
4168

4269
```rust

README.ko.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ PaddleOCR 모델을 기반으로 Rust로 구현된 경량 및 효율적인 OCR(
1313
- **고성능**: MNN 추론 프레임워크로 최적화됨
1414
- **최소한의 의존성**: 경량이며 쉽게 통합 가능
1515
- **사용자 정의 가능**: 다양한 사용 사례에 맞게 조정 가능한 매개변수
16+
- **명령줄 도구**: OCR 인식을 위한 간단한 명령줄 인터페이스
1617

1718
## 설치
1819

@@ -37,6 +38,32 @@ branch = "main"
3738
- MNN 형식으로 변환된 사전 훈련된 PaddleOCR 모델
3839
- 텍스트 인식을 위한 문자 집합 파일
3940

41+
## 명령줄 도구
42+
43+
이 라이브러리는 직접 OCR 인식을 수행할 수 있는 내장 명령줄 도구를 제공합니다:
44+
45+
```bash
46+
# 기본 사용법
47+
./ocr -p path/to/image.jpg
48+
49+
# JSON 형식으로 출력 (자세한 정보와 위치 포함)
50+
./ocr -p path/to/image.jpg -m json
51+
52+
# 상세 로그 정보 표시
53+
./ocr -p path/to/image.jpg -v
54+
```
55+
56+
### 명령줄 옵션
57+
58+
```
59+
옵션:
60+
-p, --path <IMAGE_PATH> 인식할 이미지 경로
61+
-m, --mode <MODE> 출력 모드: json(상세) 또는 text(간단) [기본값: text]
62+
-v, --verbose 상세 로그 정보 표시 여부
63+
-h, --help 도움말 정보 출력
64+
-V, --version 버전 정보 출력
65+
```
66+
4067
## 사용 예시
4168

4269
```rust
@@ -77,6 +104,22 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
77104
}
78105
```
79106

107+
## 실행 예시
108+
109+
다음은 이 라이브러리의 실행 예시입니다:
110+
111+
### 예시 1
112+
![원본 이미지 1](res/1.png)
113+
![OCR 결과 1](res/1_ocr_result.png)
114+
115+
### 예시 2
116+
![원본 이미지 2](res/2.png)
117+
![OCR 결과 2](res/2_ocr_result.png)
118+
119+
### 예시 3
120+
![원본 이미지 3](res/3.png)
121+
![OCR 결과 3](res/3_ocr_result.png)
122+
80123
## API 참조
81124

82125
### 텍스트 감지 (Det)

0 commit comments

Comments
 (0)