1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIに振込データを作らせると「株式会社」と小さい「ッ」で弾かれる問題を、振込名義の整形ツールで止める

1
Posted at

困りごと

総合振込や給与振込のデータを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 で教えてもらえると、テストに足します。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?