【Omeka S モジュール紹介】IIIF Searchモジュール
概要
IIIF Search は、全文検索のためのIIIF Content Search APIを追加する Omeka S 用モジュールです。
特に、日本語テキストを扱うための改修を加えた以下のモジュールを対象に、その使用方法を紹介します。
インストール
githubからソースコードをcloneします。omeka-s
は適宜読み替えてください。
cd omeka-s/modules
git clone https://github.com/nakamura196/Omeka-S-module-IiifSearch.git IiifSearch
githubからインストールする場合には、上記のように、フォルダ名を対象モジュール名に変更する必要がある点に注意が必要です。
インストール後、検索クエリとして使用する文字列の下限を設定するフォームが表示されます。日本語テキストを扱い場合には、1
などに設定しておくことをお勧めします。
ALTO形式のxmlファイルの作成
OCR結果を記述するためのフォーマットの一つであるALTO形式のXMLファイルを作成する必要があります。
ALTO形式のXMLファイルの作成にあたっては、以下の記事などが参考になります。
例えば、以下の画像ファイルを対して、
以下のようなxmlファイルが生成できます。
<?xml version="1.0" encoding="utf-8"?>
<alto xmlns="http://www.loc.gov/standards/alto/ns-v4#"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xsi:schemaLocation="http://www.loc.gov/standards/alto/ns-v3# http://www.loc.gov/standards/alto/alto.xsd">
<Description>
<MeasurementUnit>pixel</MeasurementUnit>
<sourceImageInformation>
<fileName>alto_test.png</fileName>
</sourceImageInformation>
<OCRProcessing ID="IdOcr">
<ocrProcessingStep>
<processingSoftware>
<softwareName>tesseract 4.0.0-beta.1</softwareName>
</processingSoftware>
</ocrProcessingStep>
</OCRProcessing>
</Description>
<Layout>
<Page ID="page_1" PHYSICAL_IMG_NR="1" HEIGHT="841" WIDTH="595">
<PrintSpace HEIGHT="841" WIDTH="595" VPOS="0" HPOS="0">
...
<ComposedBlock ID="block_1_4" HEIGHT="23" WIDTH="446" VPOS="205" HPOS="59">
<TextBlock ID="par_1_4"
HEIGHT="23"
WIDTH="446"
VPOS="205"
HPOS="59"
LANG="jpn">
<TextLine ID="line_1_4" HEIGHT="23" WIDTH="446" VPOS="205" HPOS="59">
<String ID="word_1_11"
CONTENT="Google"
HEIGHT="20"
WIDTH="70"
VPOS="208"
HPOS="59"
WC="0.89"/>
<String ID="word_1_12"
CONTENT="Colab"
HEIGHT="16"
WIDTH="58"
VPOS="208"
HPOS="135"
WC="0.93"/>
<String ID="word_1_13"
CONTENT="で"
HEIGHT="841"
WIDTH="595"
VPOS="0"
HPOS="0"
WC="0.93"/>
<String ID="word_1_14"
CONTENT="Tesseract"
HEIGHT="16"
WIDTH="117"
VPOS="208"
HPOS="195"
WC="0.91"/>
<String ID="word_1_15"
CONTENT="を"
HEIGHT="19"
WIDTH="18"
VPOS="206"
HPOS="314"
WC="0.93"/>
<String ID="word_1_16"
CONTENT="動か"
HEIGHT="19"
WIDTH="41"
VPOS="206"
HPOS="335"
WC="0.93"/>
<String ID="word_1_17"
CONTENT="す"
HEIGHT="19"
WIDTH="19"
VPOS="206"
HPOS="378"
WC="0.93"/>
<String ID="word_1_18"
CONTENT="(日"
HEIGHT="21"
WIDTH="25"
VPOS="205"
HPOS="413"
WC="0.96"/>
<String ID="word_1_19"
CONTENT="本"
HEIGHT="20"
WIDTH="20"
VPOS="206"
HPOS="442"
WC="0.93"/>
<String ID="word_1_20"
CONTENT="語"
HEIGHT="20"
WIDTH="41"
VPOS="206"
HPOS="464"
WC="0.92"/>
<String ID="word_1_21"
CONTENT="対"
HEIGHT="841"
WIDTH="595"
VPOS="0"
HPOS="0"
WC="0.93"/>
</TextLine>
</TextBlock>
</ComposedBlock>
...
</PrintSpace>
</Page>
</Layout>
</alto>
画像とxmlファイルをOmekaにアップロードする
以下のように、画像とxmlファイルをアップロードします。注意点として、画像とxmlのファイル名(拡張子を除く)を揃えて必要があります。(以下の例では、alto_test
)
この結果、アイテムの表示画面で、以下のように、検索フォーム付きのUniversal Viewerが表示されます。
(IIIF Server および III Viewersが導入されていることを前提としています。)
「日」という検索語を入力すると、タイトル部分の「日本語」の部分がハイライトされます。
まとめ
IIIF Content Search APIの機能を追加するモジュールについて紹介しました。
ALTO形式のXMLファイルを生成するプロセスは改善の余地があるため、ALTO形式のXMLファイルを自動的に作成するためのモジュール改修、または、ALTO形式以外のOCRファイルを登録可能にするためのモジュール改修など、今後の課題としたいと思います。
IIIF Content Search APIの挙動を確認する上での参考になりましたら幸いです。
Discussion