ホーム > データ(活用する) > 令和4年度OCR関連事業について > 古典籍資料のOCRテキスト化実験

古典籍資料のOCRテキスト化実験

令和4年度、令和3年度OCR処理プログラム研究開発 等で得た知見を生かし、古典籍資料を対象としたOCR処理プログラム(以下、「NDL古典籍OCR」といいます。)の内製開発を実施し、古典籍資料のテキスト化実験を行いました。

1. 古典籍資料のOCRテキスト化実験の目的

昨今のAI(機械学習)を用いたOCR(光学的文字認識)処理技術の進展により、画像データからテキストデータを作成し、本文検索サービスとして提供することが可能となってきました。 当館においても、令和3年度OCR関連事業において、当館が提供するほぼ全てのデジタル化資料をOCR処理によってテキスト化し、デジタル化資料の本文検索サービスの実現に向けて取り組んでいるところです。

国立国会図書館デジタルコレクションから提供している古典籍資料は、令和3年度OCRテキスト化作業の対象外でした。

こうした資料の多くには、くずし字や異体字、変体仮名等が使われており、専門的な知識がないと判読自体が難しい資料が多く存在します。

利用者が必要とする古典籍資料をより簡単に発見できるようになることは、単に利便性の向上のみならず、パブリックドメインとなった資料の利活用促進の観点からも大きな意義があります。

そのため、まずは本文を文字列として検索できるようにし、求める資料にたどり着きやすくすることが重要です。

古典籍資料を対象としたOCRテキスト化の先行事例としては、 人文学オープンデータ共同利用センターが開発している『みを』や、凸版印刷株式会社が開発している『ふみのは』といった くずし字OCRアプリケーションが存在しますが、 これらは、スマートフォンやタブレット端末の専用アプリケーションとして、利用者が撮影した個々の古典籍資料の判読のサポートやテキスト化を行える機能を備えたものです。

一方で、当館のような数百万画像規模の古典籍資料を所有する機関がOCRによるテキスト化を実施するためには、自らの計算機サーバ上で大量の画像に対して高速なテキスト化処理を行えるOCR処理プログラムが必要となります。

当館は、令和3年度OCR処理プログラム研究開発により、明治期以降の活字資料を対象としたOCR(NDLOCR)を開発した経験があります。 この研究開発の経験やこれまでNDLラボでの研究開発によって得た知見を応用することで、当館の次世代システム開発研究室で古典籍資料のOCRテキスト化実験を実施しました。

本実験は、これまで日本の研究機関や図書館等がデジタル人文学分野において構築しオープンデータとして公開してきた様々なデータセットを活用しています。

2. 古典籍資料のOCRテキスト化実験の対象資料

国立国会図書館デジタルコレクションからインターネットで提供しているデジタル化済みの古典籍資料(江戸期以前の和古書、清代以前の漢籍等。著作権保護期間満了分約8万点、430万画像)です。

3. 古典籍資料のOCRテキスト化実験の概要

NDL古典籍OCRは、3つの機械学習モデルによって、OCRテキスト化に必要な機能を実現しています。 それぞれの機械学習モデルが学習するためのデータセットを準備し、データセットを利用した学習をそれぞれ行い、学習後の3モデルを組み合わせることでNDL古典籍OCRを開発しました。

そして、開発したNDL古典籍OCRを利用して、当館が国立国会図書館デジタルコレクションから提供しているデジタル化済み古典籍資料のテキスト化を実施しました。

3.1. レイアウト認識モデル

資料画像中のどの領域にテキスト化するべき文字列が存在するかを自動で認識するモデルです。 機械学習モデルには、令和3年度OCR処理プログラム研究開発にて、活字資料の画像のレイアウト認識モデルを検討した際に、高い性能を発揮した、 MITライセンスのオープンソースであるCascade Mask RCNNを利用し、 学習のためのデータセットには、NDLラボから2019年に公開したNDL-DocLデータセットのうち古典籍資料から作成したデータセットを利用しています。

3.2. 文字列認識モデル

レイアウト認識モデルが認識した文字列領域を読み取って、テキストデータを作成するモデルです。 機械学習モデルには、マイクロソフト社がMITライセンスのオープンソースとして公開している、手書きの英文画像等を高精度にテキスト化できるTrOCRをベースに、 古典籍資料をテキスト化できるよう、decoderを差し替えたモデルを利用しています。

3.2.1. decoderの作成と学習

RoBERTa-smallを古典籍資料の翻刻テキスト用に改造して利用しています。 元のモデルは、京都大学の安岡孝一教授がCC-BY-4.0ライセンスで公開しているroberta-small-japanese-aozora-charをベースとし、 かつ、対象語彙を人文学オープンデータ共同利用センターが実施したKuzushiji Recognitionコンペティションにおいて精度の評価対象となったUnicodeリスト(4781文字種)のうち異体字の一部等を除外し、制御文字コード等を加えた4800種類に差し替えたモデルを利用しました。

decoderの学習には、次に挙げるいずれもオープンな古典籍の翻刻テキストデータ資源を利用しています。

3.2.2. モデル全体の学習

文字列認識モデルの学習には、資料の画像と翻刻データについて1行単位で対応付けされたデータセットが必要ですが、このようなオープンな既存のデータセットは多くありません。 したがって、必要な形式に近い既存のデータセットを加工することで、目的に沿ったデータセットを可能な限り省力的に構築することが大きな課題となりました。

今回、このようなデータセットとして、CC-BY-SA-4.0ライセンスで公開されているみんなで翻刻の翻刻データに注目しました。

この翻刻データは紙面上での1行単位に対応づいて改行の入ったプレーンなテキストデータであり、翻刻作業の際に参照した資料画像上の位置座標の情報を有していませんが、 翻刻データと画像上の位置座標情報を正しく対応付けて構造化することができれば、文字列認識モデル用の高品質な学習データを大量に入手できると考えました。

そこで、次のとおり、1行単位の翻刻データから人工的に古典籍資料の1行単位の画像を作成し、これらを利用して仮の文字列認識モデルを学習させ、 仮の文字列モデルを利用して、みんなで翻刻の翻刻成果物である翻刻データの構造化を行うことで文字列認識モデル用のデータセットを自動構築しました。

3.2.2.1. 人工的なデータセットの作成と仮の文字列認識モデルの学習

人文学オープンデータ共同利用センターから公開されている1文字単位の古典籍画像データセットである日本古典籍くずし字データセットを利用して、 3.2.1.に挙げたオープンなデータ資源から得られる翻刻データの各行と同じ内容を、1文字画像をつぎはぎすることで再現し、1行単位の資料画像を人工的に作成しました。 この人工的なデータセットを356,187行分作成し、仮の文字列認識モデルの学習を行いました。

3.2.2.2. みんなで翻刻のテキストデータ構造化と学習

3.1.で作成したレイアウト認識モデルを利用して、みんなで翻刻の翻刻対象画像から読むべき文字列の含まれる領域を認識し、認識した位置の文字列領域に対して3.2.2.1.の仮の文字列認識モデルでテキスト化を行いました。

これにより、「(1)OCRによって読み取られた誤りを含むかもしれないテキストデータ」と「(2)(1)を読み取った翻刻元画像上の位置座標情報」の2つの情報が得られます。

次に、(1)のテキストデータに最も近い文字列が含まれた翻刻データの行を当該資料画像の翻刻テキストデータから探し、両者が十分に近い場合に対応付けを行いました。

これにより、みんなで翻刻の翻刻データと(2)の翻刻元画像上の位置座標情報について部分的な対応付けが行えました。

当然に、人工的に作成したデータセットの画像と実際の古典籍資料の画像には違いがあるため、仮の文字列認識モデルではみんなで翻刻の翻刻データの一部分にしか対応付けを行うことができません。

そこで、対応付けしたデータセットを利用して文字列認識モデルの再学習を行うことを4回繰り返しました。

再学習を繰り返すことで文字列認識モデルの性能が向上するため、対応付けの歩留まりも向上し、2回目時点で約6.6万行(120万文字相当)、 みんなで翻刻バージョン2のデータを対象に加えた3回目時点で約32万行(約530万文字相当)の対応付けを行うことができました。

4回目のデータセットは2022年10月時点で当館としてはまだ学習に利用していませんが、約40万行(約600万文字相当)からなります。

2022年10月時点の古典籍資料のOCRテキスト化実験は3回目時点のデータセットを利用して学習した文字列認識モデルを利用しました。

3.3. 読み順整序モデル

読み順整序モデルには、当館が独自に開発した、レイアウト位置座標を用いてNDLOCRに読み順整序機能を追加するlightGBMモデルを利用し、 学習のためのデータセットには、3.2.2.2.で作成した2回目時点のデータセットと、みんなで翻刻の翻刻テキストデータが本来保持している読み順序を対応付けたデータセットを利用しました。

3.4.テキスト化の実施

作業は1並列あたりGPUを2基用いて3並列で実施し、2022年8月から10月までの間に、約6万資料について、位置座標付きOCRテキストデータを作成しました。

4. 性能測定結果

4.1. 評価方法

認識性能は、5文字以上の文字を含む画像ごとに文字単位についてF値($F_{measure}$)を計算することで評価しました。

F値の定義は次のとおりとしています。

$$y_{true}=\{正解文字情報に含まれる文字の多重集合\}$$
$$y_{pred}=\{認識結果に含まれる文字の多重集合\}$$
$$Precision=\dfrac{|y_{pred} \cap y_{true}|}{|y_{pred}|},Recall=\dfrac{|y_{pred} \cap y_{true}|}{|y_{true}|}$$

としたとき

$$F_{measure}=\dfrac{2Recall*Precision}{Recall+Precision}$$

F値は0から1の範囲を取り、1に近づくほど高い認識性能を表します。

4.2. 文字認識性能(実績値)

『みんなで翻刻データ』 のうち、NDL古典籍OCRの機械学習モデルの学習データセット作成作業以降に公開された翻刻データから、 次の37資料について、NDL古典籍OCRによる資料画像のテキスト化を行い、翻刻データを正解情報としてF値の中央値を計算しました。

みんなで翻刻のプロジェクト名 資料タイトル 所蔵機関名 所蔵機関の提供URL F値
翻刻!江戸の医療と養生 (産科)母子草 3巻 京都大学 https://rmda.kulib.kyoto-u.ac.jp/item/rb00004768 0.95
翻刻!江戸の医療と養生 (続)とりてくさ 京都大学 https://rmda.kulib.kyoto-u.ac.jp/item/rb00004520 0.44
翻刻!江戸の医療と養生 救急摘方 2巻 京都大学 https://rmda.kulib.kyoto-u.ac.jp/item/rb00001901 0.84
翻刻!江戸の医療と養生 温泉小説 京都大学 https://rmda.kulib.kyoto-u.ac.jp/item/rb00001456 0.83
翻刻!江戸の医療と養生 絵本不尽泉 国文学研究資料館 https://kotenseki.nijl.ac.jp/biblio/200014034 0.94
翻刻!江戸の医療と養生 虚南留別志 味の素食の文化センター 国文学研究資料館 https://kotenseki.nijl.ac.jp/biblio/100241706 0.96
翻刻!江戸の医療と養生 物覚秘伝 神戸大学附属図書館 国文学研究資料館 https://kotenseki.nijl.ac.jp/biblio/100345690 0.94
翻刻!江戸の医療と養生 身心養生記 京都大学 https://rmda.kulib.kyoto-u.ac.jp/item/rb00003533 0.96
翻刻!江戸の医療と養生 養生法 京都大学 https://rmda.kulib.kyoto-u.ac.jp/item/rb00005632 0.94
翻刻!江戸の医療と養生 腹京師食物合戦 : 2巻 国立国会図書館 https://dl.ndl.go.jp/info:ndljp/pid/9892445 0.93
翻刻!江戸の医療と養生 竹斎狂歌物語 3巻 国立国会図書館 https://dl.ndl.go.jp/info:ndljp/pid/2533655 0.96
翻刻!江戸の医療と養生 広恵済急方 3巻 京都大学 https://rmda.kulib.kyoto-u.ac.jp/item/rb00002357 0.88
翻刻!江戸の医療と養生 救民妙薬 京都大学 https://rmda.kulib.kyoto-u.ac.jp/item/rb00001965 0.91
翻刻!江戸の医療と養生 翻草盲目 国立国会図書館 https://dl.ndl.go.jp/info:ndljp/pid/2536913 0.91
翻刻!江戸の医療と養生 救荒便覧 国文学研究資料館 https://kotenseki.nijl.ac.jp/biblio/200018300 0.95
翻刻!いきもの図鑑 朝顔叢. 上巻 国立国会図書館 https://dl.ndl.go.jp/info:ndljp/pid/2536620 0.87
翻刻!いきもの図鑑 艸花繪前集. [1] 国立国会図書館 https://dl.ndl.go.jp/info:ndljp/pid/2586993 0.83
翻刻!いきもの図鑑 本草図譜. 巻10-12 国立国会図書館 https://dl.ndl.go.jp/info:ndljp/pid/2550777 0.54
翻刻!いきもの図鑑 怡顔斎梅品 2巻. [1] 国立国会図書館 https://dl.ndl.go.jp/info:ndljp/pid/2557787 0.83
翻刻!いきもの図鑑 茶席挿花集 国立国会図書館 https://dl.ndl.go.jp/info:ndljp/pid/2541280 0.80
翻刻!いきもの図鑑 本草図譜. 巻73-75 国立国会図書館 https://dl.ndl.go.jp/info:ndljp/pid/2550798 0.81
翻刻!いきもの図鑑 本草図譜. 巻5-6 国立国会図書館 https://dl.ndl.go.jp/info:ndljp/pid/2550775 0.83
翻刻!いきもの図鑑 有毒草木図説 2巻. [1] 国立国会図書館 https://dl.ndl.go.jp/info:ndljp/pid/2556216 0.76
翻刻!いきもの図鑑 草木性譜 3巻. [1] 国立国会図書館 https://dl.ndl.go.jp/info:ndljp/pid/2555814 0.84
翻刻!いきもの図鑑 花菖培養録 国立国会図書館 https://dl.ndl.go.jp/info:ndljp/pid/2536396 0.91
翻刻!いきもの図鑑 龍乃宮津子 国立国会図書館 https://dl.ndl.go.jp/info:ndljp/pid/8929636 0.81
翻刻!いきもの図鑑 艸花繪前集. [2] 国立国会図書館 https://dl.ndl.go.jp/info:ndljp/pid/2586994 0.83
翻刻!いきもの図鑑 絵本百千鳥. 1 国立国会図書館 https://dl.ndl.go.jp/info:ndljp/pid/8943229 0.85
翻刻!いきもの図鑑 艸花繪前集. [3] 国立国会図書館 https://dl.ndl.go.jp/info:ndljp/pid/2586995 0.84
翻刻!いきもの図鑑 錦繍枕 5巻. [1] 国立国会図書館 https://dl.ndl.go.jp/info:ndljp/pid/2557565 0.90
翻刻!いきもの図鑑 水族四帖. 春 国立国会図書館 https://dl.ndl.go.jp/info:ndljp/pid/1287211 0.90
翻刻!いきもの図鑑 これこれ草 2巻. [1] 国立国会図書館 https://dl.ndl.go.jp/info:ndljp/pid/2557264 0.81
翻刻!いきもの図鑑 本草図譜. 巻7-9 国立国会図書館 https://dl.ndl.go.jp/info:ndljp/pid/2550776 0.63
翻刻!いきもの図鑑 蝦夷草木図 国立国会図書館 https://dl.ndl.go.jp/info:ndljp/pid/2533718 0.88
翻刻!いきもの図鑑 皇和魚譜 2巻 国立国会図書館 https://dl.ndl.go.jp/info:ndljp/pid/2537042 0.88
翻刻!いきもの図鑑 有毒草木図説 2巻. [2] 国立国会図書館 https://dl.ndl.go.jp/info:ndljp/pid/2556217 0.76
翻刻!いきもの図鑑 救荒野菜圖説 国立国会図書館 https://dl.ndl.go.jp/info:ndljp/pid/2536199 0.92

5. 成果物の公開

古典籍資料のOCRテキスト化実験の成果物は、次の形で提供しています。

① 次世代デジタルライブラリー

NDLラボの実験サービスである次世代デジタルライブラリーにおいて、全文テキスト検索機能及び全文テキストダウンロード機能を提供しています。

古典籍資料のOCRテキスト化実験において作成したOCR全文テキストデータは全て著作権保護期間満了資料から作成していますので、自由な二次利用が可能です。

② 実験の過程で作成した機械学習データセット及びNDL古典籍OCR

2022年度内にGitHubのNDLラボ公式アカウントのリポジトリから公開予定です。

6. 本件に関する問い合わせ先

https://lab.ndl.go.jp/about/contact/