困りごと
総合振込や給与振込のデータをAIに作らせると、名義を「半角カナにしただけ」で返してきがちです。
株式会社 ニッポンショウジ → カブシキガイシャ ニッポンショウジ (AIがよく返す形)
→ カ)ニツポンシヨウジ (銀行で通る形)
振込名義に使える文字は決まっています。ある証券会社の公開ページ( https://www.gaitame.com/account/zengin.html )によると、数字・英大文字・カナ46字・濁点と半濁点・記号9種・半角スペースだけ。小さいカナは大きく、「・」はピリオド、「ー」はハイフンにします。株式会社などは法人略語にして、位置でかっこが変わります(先頭 カ)、途中 (カ)、末尾 (カ)。30文字を超えると振込できない場合もあります。
違うとデータが止まります。会計ソフトのFAQにも「振込依頼人名に使用できない文字が含まれています。」という実例があります( https://biz.moneyforward.com/support/payable/faq/office/of02.html )。
作ったもの
JP Zengin Name(MIT・Python標準ライブラリのみ・外部通信なし)。
https://github.com/ayatrader/jp-zengin-name
MCPサーバー・コマンド・Pythonの関数・Agent Skill(SKILL.md)で使えます。
python -m zenginname "ガイタメドットコム株式会社 オキナワシシャ"
ガイタメドツトコム(カ)オキナワシシヤ
- 法人・営業所・事業の略語59件(株式会社・合同会社・医療法人・一般社団法人・特定非営利活動法人・営業所・健康保険組合 など)を位置の決まりつきで変換。「かぶしきがいしゃ」と読みで書いても変換します
- 字数は振込データと同じ数え方(「ガ」は
ガで2文字) - 法人の種類以外の漢字は読みを推測しません。
E_KANJI_NEEDS_READINGで、どの字の読みが要るかを返します - 入金消込用に、通帳の名義(
カ)サクラ)と取引先名(サクラ株式会社)が同じかを比べます。ユ)と株式会社のように種類が違うときは別に知らせます
判定テスト集
data/zengin_name_cases_v1.jsonl に30問(先頭・途中・末尾、読みで書いた法人名、小さいカナ、全角英数字、ヴ、ヰ、分かれた濁点など)。
python -m zenginname.bench
{"jp_zengin_name": "30/30", "naive": "2/30"}
「NFKC → カタカナ → 半角」だけの素朴な変換は2/30でした。ただし、問題と決まりは同じ人(NEXUS)が書いたので、30/30は公開された決まりと矛盾しないことを示すだけで、実際の銀行データでの正しさの証明ではありません。
できないこと
- 漢字の読みは出しません(読みは本人や台帳から)
- 字数の上限や一部の記号は銀行で違います。元の表で空欄(結合セル)の行(医療法人社団・公益財団法人 など)は上の行の略語を使い、
W_MERGED_ROWで注意を出します - 名義だけを扱います。口座番号・銀行コード・お金は扱いません
誤判定した名義(架空の値で)を Issue で教えてもらえると、テストに足します。