NDLOCR 日本語 OCR を Windows で動かすメモ
NDLOCR で日本語 OCR できます.
ただ, そのままでは Windows で動きません...
Windows で動くようにしました!(たぶん)
repo
を使います.
が取り込まれれば本家を使うのが理想ですが... どうももう NDLOCR は開発サポートされていない雰囲気があります.
(将来的には OCR は, active に開発続いている PaddleOCR で日本語学習頑張って行うのがいいかもしれません https://github.com/PaddlePaddle/PaddleOCR )
まず, CPU version の pytorch 使う.
では CUDA での説明になっていますが, 今回は面倒なので CPU 版にしておきます.
mmdetection で torch のカスタム Op ビルドが必要ですが, この時 pytorch の構成(CUDA 版入れると CUDA ビルドしてしまう)ので, pytorch インストール時点で cpu 版を使う必要があることに注意です.
MMCV
ndlocr_cli では MMVC 1.3.2 ~ 1.4.0 で作成されてます.
mmcv は執筆時点(2023/04/15)では 2.0 がリリース版になっています.
これに伴うのか, pip パッケージの名前が mmcv-full
から mmcv
に変わっています.
ただ mmcv
2.0 では動かないので(たぶん),
$ python -m pip install "mmcv-full==1.4.0"
として 1.4.0 をインストールします.
(https://github.com/ndl-lab/mmdetection/blob/b9fbbafbd438e7272def13a06b6c4034f294bb2a/mmdet/init.py#L19 を変えれば, 1.x 系で最新の 1.7.1 でも動くとは思われる)
mim
経由でインストール
もしくは
mim
とかへんな独自パッケージマネージャ(?)使うのやめてほしい...
とりま普通に pip で入るようです.
(prebuilt は無いようなので, ビルドが必要にはなる)
pip install -U openmim
mim install mmcv==1.4.0
# or python -m mim install mmcv==1.4.0
でもいけるかもです!
NDLOCR のビルド
あとは
あたりを参考にして ndlocr のビルドすればいけます!
CUDA 版(うまくいかない)
2023/04/22 時点での pytorch CUDA stable 版を使います.
まず, Visual Studio or VS C++ Build Tools(MSVC C++ コンパイラ単体) 入れておきます
(https://qiita.com/syoyo/items/3b830194fbd119de5003 で Visual Studio C++ Build Tools は OSS コンパイルであれば商用でも使えます!)
vs tool 有効のコマンドラインでターミナル開くか,
で vcvarsall で VC コンパイラへのパス設定し, miniconda で python 3.8 環境を作っておきます.
また, pytorch の cuda バージョンと合う開発環境を conda で入れます.
を参照ください.
ただ, cuda-toolkit=11.8.0
としても最新バージョンがインストールされてしまいます. 最近は label 指定で特定のバージョンがインストール必要のようです.
今回は cuda 11.8 だったので,
> conda install -c "nvidia/label/cuda-11.8.0" cuda-toolkit
としました. ほかに available なバージョンは
で確認ください.
> python -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
mmcv は prebuilt は 2.0 からのようなので, 1.x はソースコードからビルドします...
(古い CUDA と torch を使ったのは prebuilt があるが... ほかの python module との兼ね合いもあるので...)
> python -m pip install mmcv-full==1.4.0
複数の VC バージョンがインストールされている場合は,
UserWarning: It seems that the VC environment is activated but DISTUTILS_USE_SDK is not set.This may lead to multiple activations of the VC env.Please set `DISTUTILS_USE_SDK=1` and try again.
とエラーが出る場合があります. その場合 cmd で
set DISTUTILS_USE_SDK=1
としてから pip install します.
最後のほうは
> python -m pip install -e .
でもいいかもしれません.
ただ,
running build_ext
error: [WinError 2] The system cannot find the file specified
という謎エラーで詰みました.
pytorch の CUDAExtension で, python.exe か nvcc.exe がうまく呼ばれないっぽいようだが...
(python 3.7 ではうまくいくのかもしれません)
一応 pytorch 1.13 までは prebuilt があるので, それを使うのがよいでしょうか.
pytorch 2.0 になると, mmcv 1.x の prebuilt はありません.
pytorch 1.13(Work in progress)
cuda 11.7 + torch1.13 までなら, mmvc-full 1.7.1 の prebult があるのでそれを使います!
pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu117
pip install mmcv-full==1.7.1 -f https://download.openmmlab.com/mmcv/dist/cu117/torch1.13.0/index.html
T.B.C.
TODO
- https://zenn.dev/syoyo/articles/4f6962247adfb6 を参考に NDLOCR の prebuilt whl をつくる
- ROCm 版ビルドできるか試す
- ndlocr 改変版の mmdetection を mmcv 2.0 ベースで書き直す...
Discussion