Code Monkey home page Code Monkey logo

ndlkotenocr_cli's Introduction

NDL古典籍OCRアプリケーション(ver.3)

NDL古典籍OCRを利用してテキスト化を実行するためのアプリケーションを提供するリポジトリです。

NDL古典籍OCRは、江戸期以前の和古書、清代以前の漢籍といった古典籍資料のデジタル化画像からテキストデータを作成するOCRです。

本プログラムは、国立国会図書館が令和3年度OCR関連事業から得られた知見や、 NDLラボにおけるこれまでの調査研究活動、そして人文情報学分野において構築・蓄積されてきたデータ資源を活用することで独自に開発したものです。

2023年8月に公開したver.2から、漢籍資料のレイアウト認識性能が向上しています。

漢籍資料のテキスト化において、ver.2のレイアウト認識性能がver.1よりも低下する傾向が報告されています。特に漢籍資料のテキスト化にNDL古典籍OCRを用いる際にはver.3へのアップデートを推奨します。

参考:永崎研宣, et al. OCR の高精度化を踏まえたデジタル学術編集版の新展開. じんもんこん 2023 論文集, 2023, 2023: 177-182.(外部サイト)

読み順の整序機能の性能改善に当たっては、令和4年度OCR関連事業から得られた知見を活用しています。

本プログラムを開発・改善するに当たって利用したデータセットや手法の詳細については、古典籍資料のOCRテキスト化実験及びOCR学習用データセット(みんなで翻刻)も参照してください。

本プログラムは、国立国会図書館がCC BY 4.0ライセンスで公開するものです。詳細については LICENSEをご覧ください。

2023年8月まで公開していたバージョンを継続して利用したい場合には、ver.1をご利用ください。 2024年2月まで公開していたバージョンを継続して利用したい場合には、ver.2をご利用ください。

git clone https://github.com/ndl-lab/ndlkotenocr_cli -b ver.1
git clone https://github.com/ndl-lab/ndlkotenocr_cli -b ver.2

のようにソースコード取得部分を書き換えることで継続してお使いいただけます。

環境構築

1. リポジトリのクローン

下記のコマンドを実行してください。

git clone https://github.com/ndl-lab/ndlkotenocr_cli

2. ホストマシンのNVIDIA Driverのアップデート

コンテナ内でCUDA 11.8を利用します。

ホストマシンのNVIDIA Driverが

Linuxの場合: 450.36.06以上

Windowsの場合:520.06以上

のバージョンを満たさない場合は、ご利用のGPUに対応するドライバの更新を行ってください。

(参考情報)

以下のホストマシン環境(AWS g5.xlargeインスタンス)上で動作確認を行っています。

OS: Ubuntu 18.04.6 LTS

GPU: NVIDIA A10G

NVIDIA Driver: 470.182.03

3. dockerのインストール

https://docs.docker.com/engine/install/ に従って、OS及びディストリビューションにあった方法でdockerをインストールしてください。

4. dockerコンテナのビルド

Linux:

cd ndlkotenocr_cli
sh ./docker/dockerbuild.sh

Windows:

cd ndlkotenocr_cli
docker\dockerbuild.bat

5. dockerコンテナの起動

Linux:

cd ndlkotenocr_cli
sh ./docker/run_docker.sh

Windows:

cd ndlkotenocr_cli
docker\run_docker.bat

環境構築後のディレクトリ構成(参考)

ndlocr_cli
├── main.py : メインとなるPythonスクリプト
├── cli : CLIコマンド的に利用するPythonスクリプトの格納されたディレクトリ
├── src : 各推論処理のソースコード用ディレクトリ
│   ├── ndl_kotenseki_layout : レイアウト抽出処理のソースコードの格納されたディレクトリ
|   ├── reading_order:読み順整序処理のソースコードの格納されたディレクトリ
│   └── text_kotenseki_recognition : 文字認識処理のソースコードの格納されたディレクトリ
├── config.yml : サンプルの推論設定ファイル
├── docker : Dockerによる環境作成のスクリプトの格納されたディレクトリ
├── README.md : このファイル
└── requirements.txt : 必要なPythonパッケージリスト

チュートリアル

起動後は以下のようなdocker execコマンドを利用してコンテナにログインできます。

docker exec -i -t --user root kotenocr_cli_runner bash

推論処理の実行

input_rootディレクトリの直下にimgディレクトリがあり、その下に資料毎の画像ディレクトリ(bookid1,bookid2,...)がある場合、

input_root/
  └── img
      ├── page01.jpg
      ├── page02.jpg
      ・・・
      └── page10.jpg

以下のコマンドで実行することができます。

python main.py infer input_root output_dir

実行後の出力例は次の通りです。

output_dir/
  ├── input_root
  │   ├── txt
  │   │     ├── page01.txt
  │   │     ├── page02.txt
  │   │    ・・・
  │   │    
  │   └── json
  │         ├── page01.json
  │         ├── page02.json
  │        ・・・
  └── opt.json

重みファイルのパス等、各モジュールで利用する設定値はconfig.ymlの内容を修正することで変更することができます。

オプションについて

入力形式オプション

実行時に -s b を指定することで、次の入力形式のフォルダ構造を処理できます。

例:

python main.py infer input_root output_dir -s b

入力形式

input_root/
  └── img
      ├── bookid1
      │   ├── page01.jpg
      │   ├── page02.jpg
      │   ・・・
      │   └── page10.jpg
      ├── bookid2
          ├── page01.jpg
          ├── page02.jpg
          ・・・
          └── page10.jpg

出力形式

output_dir/
  ├── input_root
  |     ├──bookid1
  │     |     ├── txt
  │     |     │     ├── page01.txt
  │     |     │     ├── page02.txt
  │     |     │         ・・・
  │     |     │    
  │     |     └── json
  │     |           ├── page01.json
  │     |           ├── page02.json
  │     |               ・・・
  |     ├──bookid2
  │     |     ├── txt
  │     |     │     ├── page01.txt
  │     |     │     ├── page02.txt
  │     |     │         ・・・
  │     |     │    
  │     |     └── json
  │     |           ├── page01.json
  │     |           ├── page02.json
  │                    ・・・
  └── opt.json

画像サイズ出力オプション

実行時に -a を指定することで、出力jsonに画像サイズ情報を追加します。

例:

python main.py infer input_root output_dir -a

注意 このオプションを有効化すると出力jsonの形式が以下の構造になります。

{
  "contents":[
    (各文字列矩形の座標、認識文字列等)
  ],
  "imginfo": {
    "img_width": (元画像の幅),
    "img_height": (元画像の高さ),
    "img_path":(元画像のディレクトリパス),
    "img_name":(元画像名)
  }
}

オプション情報の保存

出力ディレクトリでは、実行時に指定したオプション情報がopt.jsonに保存されています。

モデルの再学習について

2024年2月現在、レイアウト認識モデル及び文字列認識モデルの再学習手順を公開しています。

レイアウト認識モデルについてはtrain-layout.ipynb及びcococonverter-NDLDocLを参照してください。

文字列認識モデルについてはtrain.pyを参照してください。

ndlkotenocr_cli's People

Contributors

ndl-lab-staff avatar dfukagaw28 avatar nakamura196 avatar knagasaki avatar

Stargazers

 avatar Zheng Yuxi avatar Tmzncty avatar Rumia_Chnnel avatar  avatar  avatar MineralSteins avatar  avatar  avatar Masaya Ikeo avatar 蚍蜉渡海 avatar Yin Zhang avatar Shinji Yamada avatar Zheng Bowen avatar  avatar Natsuko YOSHIGA avatar Yanhui Xie avatar  avatar  avatar Guanwei Liu avatar haowg avatar  avatar  avatar  avatar So Miyagawa avatar  avatar Kitano-Kaneko, Naoki avatar MORIOKA Tomohiko avatar Nobutake Kamiya avatar

Watchers

liangzi avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.