概要
デフォルト設定のArchivematicaに日本語ファイル名のファイルを入力すると、「ユースケース公募提案書.docx」というファイル名は以下のように変換されます。
yu-suke-suGong_Mu_Ti_An_Shu_.docx
このファイル名変換をカスタマイズする方法について説明します。
概要
ファイル名の変換は以下で行われています。
github.com
具体的には、以下です。
decoded_name = unidecode(basename)
Google Colabでの実行例は以下です。
https://colab.research.google.com/github/nakamura196/000_tools/blob/main/unidecodeを試す.ipynb
カスタマイズ
今回は、pykakasiを使用してみます。
pykakasi
Lightweight converter from Japanese Kana-kanji sentences into Kana-Roman.
また、DockerでArchivematicaを起動しているとします。以下の記事を参考にしてください。

ArchivematicaをDockerで起動する
ArchivematicaをDockerで起動する
まず、以下にpykakasiを追記します。
archivematica/requirements-dev.txt at qa/1.x · artefactual/archivematica
Free and open-source digital preservation system designed to maintain standards-based, long-term access to collections of digital objects. - artefactual/archivematica
そして、以下のファイルも修正します。
github.com
import os
import re
import shutil
from unidecode import unidecode
import pykakasi
# 初期化
kakasi = pykakasi.kakasi()
# テキストをローマ字に設定
kakasi.setMode("H", "a") # 平仮名をローマ字に
kakasi.setMode("K", "a") # カタカナをローマ字に
kakasi.setMode("J", "a") # 漢字をローマ字に
kakasi.setMode("r", "Hepburn") # ヘボン式ローマ字に設定
# コンバーターを作成
converter = kakasi.getConverter()
VERSION = "1.10." + "$Id$".split(" ")[1]
# Letters, digits and a few punctuation characters
ALLOWED_CHARS = re.compile(r"[^a-zA-Z0-9\-_.\(\)]")
REPLACEMENT_CHAR = "_"
def change_name(basename):
if basename == "":
raise ValueError("change_name received an empty filename.")
# decoded_name = unidecode(basename)
decoded_name = converter.do(basename)
...
上記の修正を加えて、Archivematicaを再ビルドした結果、以下のようなファイル名に変換されるようになりました。
yuusukeesukouboteiansho.docx

まとめ
ファイル名の変換については、METSファイルの中で、以下のように記載されています。
<premis:eventOutcomeDetailNote>Original name="%transferDirectory%objects/ユースケース公募提案書.docx"; new name="%transferDirectory%objects/yuusukeesukouboteiansho.docx"</premis:eventOutcomeDetailNote>
そのため、ファイル名の変換ルールを気にする必要はないかもしれませんが、参考になりましたら幸いです。



コメント
…