LLM-safe Japanese address normalization

LLMに壊されない、日本住所正規化API。

OCR、音声入力、AI Agentから来る揺れた住所を、REST API / MCPで正規化・構造化。 数字の全角/半角、漢数字、番地表記、京都・札幌など日本住所特有の揺れを安全に扱います。

AI Agent Ready
MCP Ready
OpenAPI
REST API

LLMやOCRから来る住所は、そのまま保存すると壊れます

住所らしい文字列を抽出した後、専用APIで照合・構造化します。

東京都渋谷区渋谷2ー21ー1京都市中京区御幸町通二条下る山本町札幌市中央区南二条西1-5東京都中央区日本橋一丁目二番三〇一

ライブデモ

サンプル住所で試す(クリックでランダム選択):

特徴

AI Agent時代の入力にも、日本の住所特有の複雑さにも対応した正規化エンジン

AI Agent Ready

LLMが抽出した住所候補を、Agentの外部ツールとして正規化・構造化

MCP Ready

Claude Desktop、CursorなどのMCPクライアントからnormalize_addressを呼び出し

OpenAPI対応

OpenAPI仕様を公開。Agent toolchainやコード生成からREST APIとして統合

LLM-safe

LLMの推測だけに任せず、住所専用データで照合した構造化結果を返却

ハイブリッドデータ

国土交通省と郵便局のデータを組み合わせ、高精度な住所解析を実現

事業所マッチング

企業名・官公庁名から住所を特定し、正規化

大規模建物認識

タワーマンション・商業施設など、大規模建物を認識

数字自動変換

漢数字・全角数字・「の」区切りを自動でアラビア数字に変換

住居表示・地番両対応

住居表示と地番の両方に対応し、適切に正規化

超高速レスポンス

最適化されたインデックスとキャッシュで、平均5ms以下の高速処理

信頼度スコア

正規化結果の確からしさを0〜1のスコアとマッチレベルで返却

ローマ字対応

都道府県・市区町村・町域のローマ字表記を自動生成

パフォーマンス

最適化されたインデックスとキャッシュにより、従来比最大60倍の高速化を実現

60x
市区町村のみ
211ms → 3.5ms
50x
京都住所(通り名)
221ms → 4.4ms
28x
町名のみ
259ms → 9.3ms

利用シーン

AI Agent、OCR、SaaS、配送など、住所が壊れる前に正規化

AI Agent / MCP ツール

LLMが抽出した住所候補を、MCPやOpenAPI経由で正規化。Agentに住所を推測だけで補完させません。

Claude Desktop / Cursor社内AgentOpenAPI tool

OCR 後処理

手書き住所や名刺をOCRで読み取った後の誤認識・表記ゆれを補正。「渋谷区渋谷2の21の1」→「渋谷区渋谷二丁目21-1」

名刺取り込み手書き申込書郵便物の宛先読み取り

Web フォーム入力支援

ユーザーが入力した住所をリアルタイムで正規化し、送信先が期待する郵便住所表記へ変換。入力ミスと表記不一致を減らします。

EC サイトの配送先入力会員登録フォーム郵便住所マスタ照合

顧客データクレンジング

既存の住所データベースを一括で正規化。重複検出や名寄せの前処理に最適。

CRM データの整備DM 発送リストの精査顧客マスタの統合

物流・配送システム

配送先住所を正規化し、郵便番号・緯度経度を自動付与。配送ルート最適化の基盤に。

配送管理システム倉庫管理(WMS)ラストワンマイル配送

不動産・施設データ

物件、店舗、施設の住所を構造化。京都の通り名や大規模建物など、住所固有の揺れを扱いやすくします。

物件DB店舗マスタ施設検索

利用方法

SDK、REST API、OpenAPI、MCP で5分から統合

SDK

Python と TypeScript の公式 SDK を提供しています。パッケージマネージャでインストールするだけですぐに利用可能です。

どちらも MIT License で公開しています(PyPI / npm ともにパッケージ名は normal-jusho)。

Python

pip install normal-jusho
from jusho import Jusho

client = Jusho()
result = client.normalize("東京都渋谷区渋谷2ー21ー1")
print(result.address.full)
# => 東京都渋谷区渋谷二丁目21-1

TypeScript

npm install normal-jusho
import { Jusho } from "normal-jusho";

const jusho = new Jusho();
const result = await jusho.normalize("東京都渋谷区渋谷2ー21ー1");
console.log(result.address.full);
// => 東京都渋谷区渋谷二丁目21-1

REST API

ベースURL: https://api.jusho.dev

POST /normalize/batch(複数件一括処理・最大100件)

curl -X POST https://api.jusho.dev/normalize/batch \
  -H "Content-Type: application/json" \
  -d '{"addresses": ["東京都渋谷区渋谷2ー21ー1", "大阪府大阪市北区梅田1-1-1"]}'

GET /normalize

curl -G "https://api.jusho.dev/normalize" \
  --data-urlencode "address=東京都渋谷区渋谷2ー21ー1"

レスポンス例

{
  "full_address": "東京都渋谷区渋谷二丁目21-1",
  "post_code": "1500002",
  "pref": "東京都",
  "city": "渋谷区",
  "town": "渋谷二丁目",
  "banchi": "21",
  "go": "1",
  "lat": "35.659609",
  "lng": "139.705829",
  ...
}

AI Agent / OpenAPI

LLMには住所候補の抽出を任せ、保存前にJushoで正規化します。OpenAPI仕様をAgent toolchainへ読み込ませることで、REST APIを外部ツールとして呼び出せます。

// AI Agentでの推奨フロー
1. LLM/OCRで住所候補を抽出
2. Jusho REST API または MCP の normalize_address を呼び出す
3. 正規化済み住所・郵便番号・行政コードを保存
4. 正規化できない場合は元文字列を残して人間確認へ

MCP (Model Context Protocol)

Claude Desktop、Cursor、その他の MCP 対応クライアントで利用可能です。リモートサーバー方式(Streamable HTTP)のため、インストール不要で即座に利用できます。

Claude Desktop 設定 (claude_desktop_config.json)

{
  "mcpServers": {
    "jusho": {
      "url": "https://api.jusho.dev/mcp"
    }
  }
}

使用例

// Claude Desktop での使用例
「東京都渋谷区渋谷2ー21ー1を正規化して」

// レスポンス
住所を正規化しました:
- 正規化結果: 東京都渋谷区渋谷二丁目21-1
- 郵便番号: 〒150-0002
- 緯度経度: 35.659609, 139.705829

利用可能なツール:

  • normalize_address - 住所を正規化して詳細情報を取得