KuroNet Text Editor

“KuroNet Text Editor”は、「KuroNetくずし字認識サービス」による多文字くずし字OCR結果を編集するツールである。

KuroNetくずし字認識サービスが出力する、多文字くずし字OCR結果を含んだキュレーションに対し、読み順を編集する機能を提供する。

本ツールは、IIIF Curation Viewerをベースとして、OCRテキスト編集用途に特化して機能を加除したツールである。この文章では、本ツール固有の内容を中心に記述する。

目次

動作デモ/活用例

KuroNet Text Editorのデモンストレーション

使い方

キュレーションの指定

IIIF Curation Viewerと同じく、GET引数(パラメータ名:curation)の指定やドラッグ&ドロップ、ペースト(貼り付け)により、OCRテキスト編集を行うキュレーションのURLを指定する。

KuroNetダッシュボードに用意された本ツールへのリンクを用いても良い。

また、IIIF Curation Viewerでキュレーションを閲覧している場合、ウェブブラウザのアドレスバーに表示されているURLを本ツールへドラッグ&ドロップやペーストしても良い。

キュレーション表示画面キャプチャ

KuroNetくずし字認識サービスによる多文字くずし字OCR結果が表示される。OCR結果は、資料画像上に「文字マーカー」として重ねて表示される。画面左下に表示されるマーカー表示調整パネルから、文字マーカーの表示位置、不透明度、サイズを調整できる。

読み順の編集

文字認識後、読み順の情報が設定されていない状態から、文字の読み順と行の読み順を編集し、OCR結果に対して読み順を登録するケースを例として説明する。

読み順設定対象

本ツールでは、文字の読み順を指定することで行を形成し、行の読み順を指定することで、全体の読み順を完成させるモデルとなっている。

どちらのレベルの読み順を指定するかは、画面左上に表示される読み順設定対象パネルの「文字」「行」ボタンによって切り替える。

読み順設定対象パネルキャプチャ

また、読み順設定対象の切り替えは、文字マーカーを右クリックして表示されるコンテクストメニューからも行うことができる。

文字マーカーコンテクストメニューキャプチャ

読み順の削除を行った場合、削除後に読み順を訂正追加することを想定し、読み順設定対象は、削除した読み順と同じレベルに自動的に切り替わる。

文字の読み順の追加

読み順設定対象パネルが「行」になっている場合は、読み順設定対象を「文字」に切り替える。

文字マーカーをマウスでなぞっていくと(文字マーカーをクリックした状態からドラッグし、次に読む文字マーカーの上を通過していくと)、文字の読み順が設定され、文字マーカー間に連結線(青色・直線)が引かれる。

キュレーション表示画面キャプチャ

本ツールでは、読み順情報を文字/行の階層構造をもって登録することを想定しているため、基本的には、1行分をなぞれば、なぞる動作を終了する。

なぞり終えると、なぞった文字が画面右上の翻刻ダイアログボックスに表示される。この表示は、ドラッグによる位置移動や、右下隅のドラッグによる大きさ変更が可能であり、右上の「×」ボタン押下により閉じることができる。

キュレーション表示画面キャプチャ

翻刻ダイアログボックスに表示されるテキストは、読み順編集操作の確認のために表示されるものであり、コピー&ペースト等に利用することもできるが、永続的に表示されるものではない。読み順の編集完了後、KuroNetくずし字認識サービスにフィードバックする(キュレーションの上書き更新を行う)ことで、KuroNetダッシュボードから翻刻テキストを取得できるようになる。

なお、一つの文字マーカーから複数に分岐して読み順を設定するケースには対応していない。

文字の読み順の削除

読み順を追加する際、ある文字マーカーを飛ばしてしまい、下図の状態になったとする。

キュレーション表示画面キャプチャ

この例は、6行目において「し」→「け」→「の」と文字マーカーをなぞって文字の読み順を指定するところ、「け」をなぞることができず、「し」と「の」の間に連結線が引かれ、「け」は単独で残ってしまった状態を示している。

読み順を訂正するため、読み順を削除するには、連結線をダブルクリックする。

また、読み順の削除は、連結線を右クリックして表示されるコンテクストメニューからも行うことができる。同コンテクストメニューからは、ひとつながりの読み順のグループを一括して削除することもできる(上の例であれば、読み順グループの削除を選択すると、この行の読み順指定がまとめて削除される)。

連結線コンテクストメニューキャプチャ

「し」と「の」の間の連結線をダブルクリックすると、ダブルクリックした連結線が削除され、下図の状態になる。

キュレーション表示画面キャプチャ

「し」と「の」の間の連結線が削除された状態から、改めてマウスで「し」→「け」→「の」と文字マーカーをなぞると、下図のように正しく読み順が指定された状態となる。

キュレーション表示画面キャプチャ

行の読み順の追加

文字の読み順の指定を行ごとに繰り返し、下図の状態になれば、次に行の読み順指定を行う。

キュレーション表示画面キャプチャ

読み順設定対象パネルまたは文字マーカーの右クリックから、読み順設定対象を「行」に切り替える。

行頭の文字マーカーをマウスでなぞっていくと、行の読み順が設定され、文字マーカー間に連結線(紫色・曲線)が引かれる。

キュレーション表示画面キャプチャ

なお、文字の読み順の追加により形成された行が環をなしているとき、すなわち読み順上の行頭が定まらないときは、当該行を行の読み順に追加することはできない。

文字や行の読み順の指定を終えれば、読み順の保存を行う。

行の読み順の削除

行の読み順削除も、文字の読み順削除と同様に行える。

読み順の全削除

キュレーションリスト画面の「読み順を全てクリア」ボタンにより、読み順を全て削除できる。

読み順の保存

読み順の編集を終えれば、画面右上のキュレーションリスト表示()ボタン押下により表示されるキュレーションリスト画面の「上書き更新」ボタンから、読み順情報を含んだキュレーションデータを上書きエクスポートし、サーバに保存する。

キュレーション表示画面キャプチャ

読み順情報が設定されたキュレーションを本ツールで表示した場合、読み順情報に従って連結線が表示される。必要に応じて、読み順の編集と保存を繰り返すことができる。

KuroNetダッシュボードに用意された本ツールへのリンクを用いて読み順の編集を行った場合、上書き更新後、KuroNetダッシュボードから、読み順情報が反映された翻刻テキストを取得できる。

キュレーションの記述仕様

本ツールでは、IIIF Curation Viewerアノテーションビューモードにおける文字マーカーの記述構造をベースとして、次に挙げる項目を読み順情報の編集に利用している。

文字マーカー

markerオブジェクトに次のプロパティを記載する。

項目名
next
(省略可)
string
デフォルト値:なし
文字の読み順で、一つ次の文字マーカーを含むアノテーションの@idを記述する。
prev
(省略可)
string
デフォルト値:なし
文字の読み順で、一つ前の文字マーカーを含むアノテーションの@idを記述する。
next_line
(省略可)
string
デフォルト値:なし
行の読み順で、一つ次の行の行頭の文字マーカーを含むアノテーションの@idを記述する。
prev_line
(省略可)
string
デフォルト値:なし
行の読み順で、一つ前の行の行頭の文字マーカーを含むアノテーションの@idを記述する。

記述例

キュレーション表示画面キャプチャ

上図の例に相当する部分を抜粋して示す。

{
  "@context": [
    "http://iiif.io/api/presentation/2/context.json",
    "http://codh.rois.ac.jp/iiif/curation/1/context.json"
  ],
  "@id": "http://example.org/iiif/book1/curation",
  "@type": "cr:Curation",
  "label": "Character List",
  "viewingHint": "annotation",
  "selections": [
    {
      "@id": "http://example.org/iiif/book1/range1",
      "@type": "sc:Range",
      "label": "Characters",
      "members": [
        {
          "@id": "http://codh.rois.ac.jp/pmjt/iiif/200017526/canvas/00113#xywh=2604,930,1,1",
          "@type": "sc:Canvas",
          "label": "KuroNet OCR Result",
          "metadata": [
            {
              "label": "Annotation",
              "value": [
                {
                  "@id": "http://example.org/iiif/book1/annotation/1",
                  "@type": "oa:Annotation",
                  "motivation": "sc:painting",
                  "resource": {
                    "@type": "cnt:ContentAsText",
                    "chars": "ま",
                    "format": "text/plain",
                    "marker": {
                      "text": "ま",
                      "next": "http://example.org/iiif/book1/annotation/12",
                      "next_line": "http://example.org/iiif/book1/annotation/8",
                      "prev_line": "http://example.org/iiif/book1/annotation/6"
                    }
                  },
                  "on": "http://codh.rois.ac.jp/pmjt/iiif/200017526/canvas/00113#xywh=2604,930,1,1"
                }
              ]
            }
          ]
        },
        (中略)
        {
          "@id": "http://codh.rois.ac.jp/pmjt/iiif/200017526/canvas/00113#xywh=2604,1072,1,1",
          "@type": "sc:Canvas",
          "label": "KuroNet OCR Result",
          "metadata": [
            {
              "label": "Annotation",
              "value": [
                {
                  "@id": "http://example.org/iiif/book1/annotation/12",
                  "@type": "oa:Annotation",
                  "motivation": "sc:painting",
                  "resource": {
                    "@type": "cnt:ContentAsText",
                    "chars": "す",
                    "format": "text/plain",
                    "marker": {
                      "text": "す",
                      "next": "http://example.org/iiif/book1/annotation/24",
                      "prev": "http://example.org/iiif/book1/annotation/1"
                    }
                  },
                  "on": "http://codh.rois.ac.jp/pmjt/iiif/200017526/canvas/00113#xywh=2604,1072,1,1"
                }
              ]
            }
          ]
        },
        (中略)
      ],
      "within": {
        "@id": "http://codh.rois.ac.jp/pmjt/book/200017526/manifest.json",
        "@type": "sc:Manifest",
        "label": "宇津保物語"
      }
    }
  ]
}

ライセンス

KuroNet Text Editor v2.0 (Powered by IIIF Curation Viewer)
http://codh.rois.ac.jp/software/kuronet-text-editor/

Copyright 2020 Center for Open Data in the Humanities, Research Organization of Information and Systems
Released under the MIT license

Core contributor: Jun HOMMA (@2SC1815J)

Licenses of open source libraries, see acknowledgements.txt

開発履歴

バージョン2.0 (2024-11-11)

  1. IIIF Curation Viewer v2.0相当の機能に更新。
    1. 主な更新内容
      1. キュレーション/マニフェスト/キャンバスの情報表示に対応。
      2. IIIFマニフェスト/キュレーションURLのドラッグ&ドロップ、ペースト対応を改良。
    2. ただし、矩形枠線マーカーの編集機能は除く。

バージョン1.1 (2024-08-27)

  1. IIIF Presentation API 3.0のマニフェスト表示に対応。

バージョン1.0 (2020-03-25)

  1. 最初のバージョンを公開。