Menu

「漢字源」のインデックス構造不整合の対策

【問題】
「スーパー統合辞書 1998」や「スーパー統合辞書 2000」(富士通)に収載の漢和辞典「漢字源」を squeeze で減量化すると、「インデックス構造に不整合があります 書籍ファイルの再構成を中止しました」という表示が出て、処理が終了する。
(他の版の「漢字源」で同様のエラーが出るかどうかは、情報がありません)

【原因】
EPWING / 電子ブック形式の電子辞書の構造を解析するためのツール EBDump を使って、エラー原因を調べたところ、前方一致かなインデックスと後方一致かなインデックスに、1ヵ所ずつデータの間違いがあることがわかりました (block=8261 と block=10526)。
EPWING のインデックスは、1ブロック(2KB)ごとの単位で作られており、各ブロックの頭にブロック内の要素数(項目数)が記述されています。上記のエラーがお きる個所を見たところ、実際の要素数より1つ多い数字になっていました。従って、squeeze がその要素数をもとに処理をしていると、オーバーランして次のブロックまで読んでしまうことになるわけです。
この間違いは、両インデックスとも同じ「ごうか」の項目付近でおきていることから、インデックス作成時の処理ミスに起因しているのかもしれません。

【対策】

バイナリエディタで正しいデータに修正すればいいのですが、この版の「漢字源」は EPWING規約第6版に準拠して圧縮されているので、そのままのかたちではエラー個所がわからず、修正ができません。まず HONMON2 のデータを展開したのちに、修正するという手順を踏みます。

【手順】
1)圧縮辞書を展開するためのツール ebzip を用意する。
EB ライブラリ(http://www.sra.co.jp/people/m-kasahr/eb/)の下記ページから、eb-4.2-win32.exe (791 KB)をダウンロードして、インストールする。インストールしたフォルダのサブ フォルダ bin のなかに、圧縮・展開ツール ebzip.exe がある。
ftp://ftp.sra.co.jp/pub/misc/eb/

2)圧縮辞書 HONOMN2 を展開する。統合辞書すべてをまとめて展開してもいいが、ここでは「漢字源」だけ展開する。
(1) ebzip のあるフォルダ(ここでは \Dic\EB Library\bin とする)に、辞書の CD-ROM から、Catalogs のファイルと Kanjigen のフォルダをコピーする。
(2) MS-DOSプロンプト(コマンドプロンプト)を起動し、ebzip のあるフォルダに移動する(前記フォルダだと、移動コマンドは CD \DIC\EBLIBR~1\BIN)。
(3) ebzip -u と、オプションの -u をつけて実行する。ファイル名、フォルダ名を指定しなくても、同じフォルダ内の Catalogs を参照して、展開が開始される。
(4) 展開されたファイルは、Kanjigen の Data フォルダのなかに HONMON2.org というファイル名で保存される。HONMON2 よりファイルサイズが大きくなっていることを確認する。なお、統合辞書の Catalogs をそのまま使っているので、ほかの辞書のフォルダが同時に作成されるが、空なので削除してかまわない。

3)バイナリエディタを用意する。お奨めは Stirling(下記サイトでダウンロード)。

http://www.vector.co.jp/soft/win95/util/se079072.html

4)バイナリエディタを起動して、展開した HONMON2.org を読み込む。

5)検索機能で、修正目標位置を16進数でさがし、データを直接書き換える。
(1) 前方一致かなインデックスの修正
検索機能で下記データの位置を探す。行の先頭アドレスは 01022000 のはずです。
90 00 00 67 C0 08 25 33 25 26 25 28
4番目のデータ「67」を「66」に直接書き換える。
(2) 後方一致かなインデックスの修正
検索機能で下記データの位置を探す。行の先頭アドレスは 0148E800 のはずです。
90 00 00 68 C0 06 25 2B 25 24 25 6C
4番目のデータ「68」を「67」に直接書き換える。
(3) HONMON という名前で保存する。

6)その後に、squeezeによる減量化や、圧縮ソフトによる処理を行う。→関連ページ