研究ブログ

版次弁別用匡郭高測定プログラムRulerJBのご紹介

 (2019/12/25大幅加筆修正、2020/2/6加筆修正、2020/2/14追記)

 

 拙稿「覆刻版における版面拡縮現象の具体相――匡郭間距離比較による版種弁別法確立のために――」『斯道文庫論集』(第53輯、2019/2/28。慶應義塾大学学術情報リポジトリ(KOARA)で公開中)で述べた機械的版次弁別のプログラムを制作しましたのでご紹介します。

 「RulerJB」(=Ruler for Japanese Books、略称RJB)と名付けています。OpenCVを用いたヒストグラムによる分析での直線検出です。 

 動作確認環境はWindows 10 Pro 64bitです。そのほかの環境での動作確認は行っていません。また、Microsoft .NET Framework 4.7.2がインストールされている必要があります。Microsoft .NET Frameworkの導入については以下のサイトなどをご参照ください。
https://docs.microsoft.com/ja-jp/dotnet/framework/install/on-windows-10

 また、インストールされているかの確認はこちらをご参照ください。
https://support.microsoft.com/ja-jp/help/318785/how-to-determine-which-versions-and-service-pack-levels-of-the-microso

 2020年2月11日、RulerJB Ver.1.00を公開しました。
http://bit.ly/RJB_1_0_0

 GitHubでも公開しています。
https://github.com/shinya8200/RJB.git

 ライセンスはGNU GPLv3(改変可、再頒布可、要継承)です。
 

 

 

【RJBの使い方】 

 これがメイン画面です。 

 

 

 

 画像の読み込みについては一般的な画像形式(JPEG,TIFF,PNG,BMP,GIF)とPDFファイルに対応しています。また、IIIF Manifest URIにも対応していますが、Manifestファイルの記法によっては一部対応できていないものもあるかもしれません。

 

 読み込みは左上部の「ファイル」タブから「新規・~」を選択するか、メイン画面に画像ファイルやフォルダをドラッグします。今回は拙稿で取り上げた『臨済録』(国文学研究資料館蔵、請求記号:ワ3-45、https://doi.org/10.20730/200015411、http://kotenseki.nijl.ac.jp/biblio/200015411/manifest)のIIIF Manifest URIを指定してダウンロードします。

 

 左上部の「ファイル」タブから「新規・IIIF Manifest URI」を選択します。

 

 

 

 URIの入力画面が現れますので、当該資料のIIIF Manifest URI(今回はhttp://kotenseki.nijl.ac.jp/biblio/200015411/manifest)を入力します。 

 

 

 

 以下の確認画面が現れますので、画像ファイルを使用後に消す場合は「一時保存ファイルで開く」、保存する場合は「名前を付けてファイルを保存する」を選択します。

 

 

 

 今回は「名前を付けてファイルを保存する」を選択します。ファイルの保存場所を選びます。

 

 

 

 ダウンロード中です。お待ちください。画像のサイズに比して回線が細いと途中で切れるかもしれません。

 

 

 

 読み込みが終わりました。左側に画像が、右側にファイル一覧が表示されます。

 

 

 

 左右領域は領域の区切線を動かすことで、サイズの変更をすることが可能です。右側領域の各項目の幅も変更可能です。

 

 左側領域の画像をドラッグすると画像そのものが動きます。画像をダブルクリックするか、中央下部の「全体表示」をクリックすると領域内最大サイズになります。

 

 また、マウスのホイール、もしくはキーボードの「+」「-」で画像を拡縮させることができます。

 

 

 

 画像を読み込むと緑の枠(匡郭高検出枠)と赤い枠(紙高検出枠)とが4つずつ現れます。この枠を「ROI」と呼び、この枠内を分析の対象としています。これは冊子の撮影画像だと匡郭や紙の端の現れる位置は多少の上下はあれ、おおむね一致していることを用いて検出精度と処理速度を上げるためです。紙の高さをとるのは整版本では化粧裁ちにより一冊の中で紙の高さはほぼ一定になることが多く、本の厚みなどによってカメラと対象物の距離が変化したときに紙の高さで補正するためです。

 

 また、ROIのサイズは画像の高さの6%を初期設定にしています。これは板木の縦方向の最大収縮率が6%弱と推測されるためです。

 

 

 

 さて、これらを手動で動かします。ROIの中央付近にカーソルを合わせ、「Ctrl」キーを押しながらドラッグすると上下左右の枠が同時に動きます。

 

 左下の「ROI操作方式」によって、上下/左右方向をそれぞれ固定することができます。

 

 コツとしてはなるべく、匡郭枠は紙の端を含まないように、紙枠は匡郭を含まないようにすることです。また、見開きにすることによって他の丁の版心が少しずつ見えますので、他の丁の匡郭がROI内に収まるように調節します。

 

 

 

 多くの場合は不要かと思いますが、「Ctrl」キーを押しながらROIの四隅を選択すると枠のサイズの変更ができます。

 

 ROIの上で右クリックすると選択肢に出る「ROI調整」によってある程度自動調整ができます。「ROIサイズ合わせ」では4つの枠のサイズを選択している枠と同じにします。「ROI上下位置合わせ」では左右の枠の上下位置を、「ROI左右位置合わせ」では上下の枠の左右位置を選択している枠と同じにします。

 

 また、それぞれのROIを個別に動かしたい場合は、「ROI垂直モード」「ROI上下連動モード」のチェックを外してください。

 

 

 

 設定が終わったら、左下の「ROI情報」のチェックを外します。以下の確認ウインドウが出ます。

 

 

 

 ROIの枠内を処理しているので枠が小さければ処理が早くすみますが、誤検出の確率も上がります。鼇頭や書入が多いなど、初期設定でうまくいかない場合は、横に広く縦に狭く、横長の長方形を設定すると解決することがあります。

 

 右下の「自動計測」ボタンを押すと計測を開始します。右側領域の「除外」欄にチェックを入れた画像は計測対象から除外されます。

 

 

(計測中。所要時間は39ファイル[5616px×3744px]で14秒ほどでした。)

 

 

 

 このようなかたちで結果が表示されます。緑の矢印が匡郭高、赤の矢印が紙高です。

 

 

 

 ここでは、おそらく染みの影響でしょう、左側の紙高が検出できていないため、赤い矢印が出ていません。この様な場合は画像上で右クリックをすると現れる選択肢「検出ライン 追加/削除」の各項目にチェックを入れると、各ROIの中央部を結んだ矢印が出現します。

  

 

 

 手動補正が可能なので、「Ctrl」を押しながら緑の矢印を移動させます。矢印の端を選択することで上下方向に、中央付近を選択することで左右方向に移動します。誤検出の場合の手動修正も同様の手順で行います。移動中は矢印が橙色に変わります。

 

 

 

 手動補正をしたファイルは右側領域の「変更」欄に自動でチェックが入り、確定情報と扱い、再度「自動計測」を行った場合に除外対象となります。除外したくない場合は「Ctrl」キーを押しながら「自動計測」を選択すると、確定情報も含めて計測します。

 

 

 

 これで確認が終わりました。続いて、pixelをmmに換算します。巻尺などが写っている画像に移動して、「ツール」タブをクリックするか、画像上で右クリックをし、「データ設定」に移動してください。(下の画像の表紙上の赤い矢印は紙高の誤検出ですので気にしないでください)

 

 

 

 紙高による換算、画像カーソルの長さによる換算、1mm当たりのPixel数、DPI(dots per inch)による換算の4通りを用意しています。

 カメラと資料の距離が一定でないと疑われる場合や、ルーラーが資料と同一平面にない場合などは、前述の通り、紙高を利用すると補正することができます。紙高は書誌には必ず記されていると思われます。

 お手持ちの資料を利用する場合、平面をしっかりとり、カメラと資料との距離を一定に保った撮影をした方が誤差が少ないのですが、いくらかの機材を用いた上でライティングもしなければならず、個人ではなかなか難しいかもしれません。その場合、資料を傷めにくいように注意を払った上で、フラットベッドスキャナを用いるのが最も簡便です。そのためにDPIを選択できるようにしています。スキャナで設定したDPIを入力していただくとmmに換算できます。

 

 

 

 今回はルーラーによる変換を行います。「画像カーソル長さ」にチェックを入れると現れる赤い画像カーソルは「Ctrl」を押しながら端をドラッグすることで動きますので、巻尺の適当な長さ(画像では300mm)に合わせ、「画像カーソル長さ」にmm数を入力し、「設定」ボタンを押します。なお、この画面でも、マウスのホイール、もしくはキーボードの「+」「-」で画像を拡縮させることができます。

 

 

 

 長さを指定後は、右下の「表示形式」を「mm」にすることで、欄の表示がmmになります。

 

 

  

 現在の作業状態については、「ファイル」タブの「作業状態の保存」で保存できます。途中で作業を中止する際や、作業終了後再調整をする際、他の方と状況を共有する際に使えます。なお、画像については相対パスで参照しています。位置が変わった場合は復元の際に指定し直してください。

 

 また、「ROI設定保存」でROIの位置・サイズ設定のみを保存できます。他の伝本でROI設定を流用する場合などに使えます。

 

 

 

 これで設定が終わったので、右下の「CSV出力」ボタンを押してcsvに出力します。左右を1行にするか、2行に分けるかの2通りの出力を用意しています。csvにはmmもpixも出力します。

 

 

 

 このような形で出力されます。手動で変更した箇所は「変更有無」列に「有」と記されています。

 

 

 

 同じ伝本をノギスで手動計測したデータと並べて、グラフにしてみました。測定誤差低減のために手動で測ったのは双辺(子持ち枠)の外側の太線の内法であったのに対して、単辺・双辺双方に対応するためにプログラムの検出位置は子持ち枠の外法になっているので5mmほど差がありますが、グラフの形自体は相似形になっています。RJBによる計測でも手動測定と同様に、版の弁別をすることはできそうです。

 

 

 

 さて、別版だと、以下のようにグラフの形が全く異なるものになります。(以下のグラフは『臨済録』の三つの版を、手動計測のデータで比較したものです。なお、駒澤大H124.1/8本は国文研本の覆刻版とみられます)

 

 

 

 

 一方、同版の伝本を比べると(当たり前のようですが)以下のようにグラフの形状が相似形をとります。これで、版の異同が確認できます。

 

 

 

 

(2020/2/14追記)
【版の弁別の仕方】
 本項では、RJBでの計測終了後に版を弁別する手法を提示します。Excel 2016を使う例です。
 Excelで新規ファイルを作成し、丁付や伝本名などを入力します。

 

 


 続いて、RJBで出力したcsvファイル(Excelで開けます)から、当該匡郭高をコピー&ペーストします。

 

 

 

 データを入力した列を全て選択(列番号をドラッグ)し、「挿入」タブの「おすすめグラフ」をクリックします。

 

 

 

 (おそらく)初めに出てくる折れ線グラフでも良いのですが、マーカー付の方が見やすいかもしれません。

 

  

 

 「すべてのグラフ」タブの「折れ線」のなかに「マーカー付き折れ線」グラフがありますので、それを選択します。

 

 

 

 このように折れ線グラフが作成されますので、グラフの形状が相似であれば同版と判断できますし、そうでない部分があれば異版か補配を疑ってみてください。これは異版の例です。

 

 

 

 Excelのグラフは初期値が左から右ですが、実際の伝本の向き(右から左)に改めたい場合は、軸を右クリックして、「軸の書式設定」をクリックしてください。

 

 

 

 「軸のオプション」タブから、さらに「軸のオプション」を選択し、「軸を反転する」にチェックを入れると逆順になります。

 

 

 

 ちなみに、逆順にしたグラフは多くの場合、整版本を版心側から見た際の天側の匡郭のばらつき(赤丸部)に近似します。これは整版本では多くの場合、地側の匡郭を揃えて丁合するためです。すなわち、理論的には赤丸部の比較でも版の弁別ができるということですね。(以下の画像は左が天側です)

 

 

 

 さて、扱う伝本が多くなると、折れ線グラフの比較では見辛くなってきます。本手法は、本質的には前後の丁との高低差の比較、すなわち波形の比較です。そこで、フーリエ変換をして、棒グラフでの比較をすることもできます。フーリエ変換をするフリーソフトはFFTexc(https://www.vector.co.jp/soft/win95/edu/se472887.html)などが便利です。フーリエ変換については守岡知彦氏に示唆をいただきました。要望があれば、こちらについても詳述します。

 

 

 

【応用例】
 『春曙抄』は早い時期に覆刻版が作成され、明治期に至るまで原版と覆刻版の組み合わせのみで刷られ続けました。それを証するのが代表的な伝本を集成・比較した以下のグラフです。板木の組み合わせは伝本によって変わるものの、原版と覆刻版とで高低に二分されるのがわかります。

拡大版はこちら(春曙抄_01_全.jpg

 

 


 原版と覆刻版とのいずれかのみが使われている伝本を抽出すると以下の通りです。高低に二分されています。覆刻の際の縮み方がまちまちなのがわかります。

拡大版はこちら(春曙抄_02_原覆.jpg

 

 


 ある時期に原版と覆刻版との二組の板木が一所に集まり、その後、二軒の書肆がそれらを一組ずつ持ち合います。持ち合った際に板木の組み合わせが変化します。持ち合った後の二種の伝本を比較した以下のグラフにおいて、原版と覆刻版の持ち合いが排他的関係にあることが以上の経緯を証します。

拡大版はこちら(春曙抄_03_原覆持合.jpg

 

 

 

 さらにその後、一軒の書肆が二版をともに入手し、時々で原版と覆刻版の組み合わせを変えて刷っています。なお、これはおそらく意図的なものではなく、全丁を揃える際に原版と覆刻版とを区別せず、適宜抜き出した結果かと思われます。

拡大版はこちら(春曙抄_04_上坂原覆併用.jpg

 

 

 

 最終的に、重複分の板木は処分され、一組に統一されて明治に至ります。

拡大版はこちら(春曙抄_05_山崎以後.jpg

 

 


 このように、いくらかの伝本を比較することで、版の同定だけでなく、板木の動きなども見えてくることがあります。本件の詳細は拙稿「板本『枕草子春曙抄』の諸本系統――板木の利用状況の考察を中心に――」『語文』(大阪大学)(99輯、2012年12月、http://hdl.handle.net/11094/70892)をご参照ください。

 

 

 

(2019/3/12 追記)
 拙稿でも簡単に触れましたが、匡郭がないものでも整版本であれば字高を比較することである程度版種の弁別が出来る可能性があります。
 これは古活字版『伊勢物語』(国文学研究資料館蔵、請求記号:98-573)ですが、このようなかたちで数行分の一字目をROIに入れると割とうまくいきます。 

 

 

 

 このような結果になります。

 

 

 

 ということは、ご賢察の通り、古筆切などでも使える可能性があるということです。古筆切の字高を測りたいというご要望は数人の方から伺っていました。以下は『古筆手鑑』(国文学研究資料館蔵、請求記号:ラ3-27)の6コマ目です。

 

 

 

 先ほど同様、このようにROIを設定します。

 

 

 

 このような結果が出ます。(数行あればうまく出やすいです。うまくいかない場合は手動補正という最終手段があります。)

 

 

 

 以下、pixをmmに変換します。画像上で右クリックするか、上部メニューの「ツール」から「データ設定」を選択します。紙高(前画像の赤矢印)がとれている場合には、右欄上部の「紙高入力(mm)」に紙高を入力します。『古筆手鑑』は縦361mm、横240mmと書誌に書いてありますので、それを入力します。
 紙高がうまくとれない場合には、上述の通り、右欄中段「画像カーソル長さ」にチェックを入れると、画像上に赤い矢印が出ますので、それを紙の高さ(あるいはルーラー)に手動であわせて、その長さをmmで入力します。入力が終わったら「設定」をクリックします。
 設定が終わったら、「表示形式」を「mm(実測紙高より)」に変更すると、表示単位がpixからmmに変わります。

 紙高が「361.000mm」、R匡郭高(すなわち字高)が「213.644mm」と表示されました。右クリックメニューでクリップボードにコピーできるようにしています。

 

 

 

 このような応用手法がありますので、追記いたしました。ただし、古筆切の場合は文字の出現位置がまちまちであり、連続処理の効果が薄いので、結局のところは手作業の方が早いかもしれません。古筆切の研究については、行取り(行間隔)や一行字数なども必要でしょうから、くずし字OCRなどの文字領域を認識してxmlなどにピクセル位置を書き出すものとの方が親和性が高いように思われます。

 

 

(2019/5/6 追記)

 永崎研宣先生がブログ(http://digitalnagasaki.hatenablog.com/?page=1556817157)でIIIF画像と手元の画像を透過で重ね合わせるツール(http://21dzk.l.u-tokyo.ac.jp/SAT2018/iiiflink/overlayimgs.php)を紹介・公開されました。ありがたいことです。

 

 また、北本朝展先生の「画像データの分析から歴史を探る―「武鑑全集」における「差読」の可能性―」『歴史情報学の教科書』(文学通信、2019年)(なんと全文が読めます!)でも紹介されているように、人文学オープンデータ共同利用センター(CODH)でも武鑑の異同の判別に版面の比較を用いておられるようです。

 

 拙稿でも言及しましたが、このような版面の個別比較と、匡郭高比較とは相補的な関係にあります。(目視や機械処理による)版面の個別比較は丁数が少ない資料に強く、かつ精確であり、匡郭高比較は全体を見通すのに優れ、かつ撮影条件が異なる画像を比較する際にも一定の精度が出ます。
 従来の書誌学の成果とも併せ、これらを複合的に用いることで精度の向上と労力の削減が見込まれることと思います。

 

(2019/9/3 追記)
 つづけて、永崎研宣先生がブログ(http://digitalnagasaki.hatenablog.com/entry/2019/08/30/001833)でIIIF画像同士を透過で重ね合わせるツール(http://candra.dhii.jp/nagasaki/iiifoverlay/viewer.html)を作成・公開されました。

 

(2019/12/26追記)
 北本先生や永崎先生の手法は、文書校正で昔から行われている検版の古典籍デジタル版と捉えられます。校正の現場で「デジタル検版」と呼ぶものが流用できる可能性がありますね。