# Japanese Text Toolkit: Furigana, Romaji, Wareki (`ucchiii/japanese-text-toolkit`) Actor

Convert Japanese text in bulk: kana readings (furigana), Hepburn romaji, Japanese era dates (wareki ⇄ western), kanji numerals → digits, full/half-width normalization. 日本語のふりがな・ローマ字・和暦変換・漢数字・全角半角を一括変換。$0.50 per 1,000 texts.

- **URL**: https://apify.com/ucchiii/japanese-text-toolkit.md
- **Developed by:** [Actor Factory](https://apify.com/ucchiii) (community)
- **Categories:** Developer tools, AI, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.35 / 1,000 text processeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Japanese Text Toolkit — furigana, romaji, wareki dates, normalization

**For developers and data teams handling Japanese addresses, names and dates:** this Actor converts texts in bulk to kana readings (furigana), Hepburn romaji, western-calendar dates (from wareki), Arabic numerals (from kanji numerals) and normalized full/half-width characters. **$0.50 per 1,000 texts.**

日本語の住所・氏名・日付などを一括で、ふりがな・ローマ字・和暦→西暦・漢数字→算用数字・全角半角正規化に変換します。**1,000件あたり $0.50。**

**English** | [日本語](#日本語)

**For data teams, localization and CRM/ERP engineers working with Japanese company names, addresses and documents.**
Convert text in bulk — paste texts or point it at a dataset from any other Actor. **$0.50 per 1,000 texts.**

| Operation | Example input | Output |
|---|---|---|
| Normalize | `ＡＢＣ１２３　ﾃｽﾄ` | `ABC123 テスト` (NFKC: full-width ASCII → half-width, half-width kana → full-width, spaces tidied) |
| Kana reading (furigana) | `東京都千代田区` | `とうきょうとちよだく` / `トウキョウトチヨダク` |
| Romaji (Hepburn) | `彼は東京へ行く` | `kare wa toukyou e iku` (particles は/へ/を → wa/e/o) |
| Wareki → western | `令和五年四月一日`, `R6.4.15`, `平成元年` | `2023-04-01`, `2024-04-15`, `1989` |
| Western → wareki | `2024年1月5日` | `令和6年1月5日` |
| Kanji numerals → digits | `資本金は三千万円`, `第十五回` | `資本金は30000000円`, `第15回` (only words recognized as numbers are converted — place and person names like 千代田区・千葉・五十嵐 stay as they are) |

**Why**: Japanese company names, addresses and documents need readings for sorting/search, romaji for
international systems, and era-date conversion for forms and filings. Doing this usually means installing
a morphological analyzer and dictionaries — this Actor does it via API, in bulk.

### Input

```json
{ "texts": ["株式会社ＡＢＣは令和五年四月一日に設立されました。"], "operations": ["reading", "romaji", "wareki"] }
```

Or process a field of every item in a dataset: `{ "datasetId": "…", "textField": "companyName" }` — results are added to each item as `companyName_jp`.

### Output (one item per text)

```json
{
  "text": "株式会社ＡＢＣは令和五年四月一日に設立。2024年1月5日に増資。",
  "normalized": "株式会社ABCは令和五年四月一日に設立。2024年1月5日に増資。",
  "hiragana": "かぶしきがいしゃABCはれいわごねんしがついちにちにせつりつ。…",
  "romaji": "kabushikigaisha ABC wa reiwa go nen shi gatsu ichi nichi ni setsuritsu. …",
  "warekiDates": [{ "text": "令和五年四月一日", "iso": "2023-04-01" }],
  "seirekiDates": [{ "text": "2024年1月5日", "iso": "2024-01-05", "wareki": "令和6年1月5日" }],
  "textWithSeireki": "株式会社ABCは2023年4月1日に設立。2024年1月5日に増資。",
  "textWithArabicNumerals": "株式会社ABCは令和5年4月1日に設立。2024年1月5日に増資。"
}
```

### Use cases

- Add furigana / kana readings to company or customer names for sorting and search
- Romanize Japanese addresses and names for international systems
- Convert wareki dates (令和5年, R6.4.15) to ISO dates in forms and filings
- Normalize full-width / half-width text before deduplication

### Pricing

**$0.0005 per text** ($0.50 per 1,000). Empty input runs a free demo.

### Limitations

Readings come from a dictionary (Sudachi, core dictionary). Names, rare words and numbers can have
several valid readings (e.g. 一日 = ついたち/いちにち); the most common reading is used. Romaji is Hepburn
without macrons (東京 → toukyou).

***

### 日本語

日本語テキストを一括変換します。テキストを貼り付けるか、他の Actor の出力データセットを指定してください。

- **正規化**：全角英数→半角、半角カナ→全角、空白の整理（NFKC）
- **読み仮名**：ひらがな・カタカナ（例：東京都千代田区 → とうきょうとちよだく）
- **ローマ字**：ヘボン式（助詞の「は・へ・を」は wa / e / o）
- **和暦⇄西暦**：令和五年四月一日・R6.4.15・平成元年 → 西暦。西暦の日付には和暦を付与
- **漢数字→算用数字**：三千万円 → 30000000円、第十五回 → 第15回（数として使われている語だけを変換。千代田区・千葉・五十嵐などの地名・人名はそのまま）

料金：**1件 $0.0005**（1,000件 $0.50）。

注意：読みは辞書（Sudachi）にもとづきます。人名・固有名詞・数字は読みが複数ありうるため、一般的な読みになります。

### More tools from the same developer

- [Dataset Merge & Dedup](https://apify.com/ucchiii/dataset-dedup-merge) — merge Apify datasets and remove duplicates by the fields you choose
- [Google Sheets Export](https://apify.com/ucchiii/google-sheets-export) — export an Apify dataset to Google Sheets
- [Job Postings Normalizer](https://apify.com/ucchiii/job-postings-normalizer) — unify fields, salaries and dates from any job scraper and remove duplicates

# Actor input Schema

## `texts` (type: `array`):

Japanese texts to convert, one per line. Required for real results (or use datasetId); leave both texts and datasetId empty to run a free demo on two sample texts (not charged). / 変換するテキスト（1行1件）。空なら見本で無料デモ

## `datasetId` (type: `string`):

Dataset ID (a finished run's 'defaultDatasetId', e.g. 'WkzbQMuFYuamGv3YF'): converts a text field of every item (e.g. output of another Actor). Alternative to texts.

## `textField` (type: `string`):

Field to convert when using a dataset, e.g. 'name' or 'address'. Results are added as '<field>\_jp'. Required when datasetId is set.

## `operations` (type: `array`):

Conversions to run, any of: 'normalize' (full/half-width and spacing), 'reading' (hiragana/furigana), 'romaji' (Hepburn), 'wareki' (Japanese era dates to western years), 'kanjiNumerals' (kanji numbers to digits). Empty = all five. / 空なら全部

## Actor input object example

```json
{
  "texts": [
    "株式会社ＡＢＣは令和五年四月一日に設立されました。",
    "東京都千代田区丸の内一丁目"
  ],
  "operations": [
    "normalize",
    "reading",
    "romaji",
    "wareki",
    "kanjiNumerals"
  ]
}
```

# Actor output Schema

## `results` (type: `string`):

One item per input text with the original text plus hiragana, romaji, textWithSeireki and textWithArabicNumerals, depending on selected operations.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "texts": [
        "株式会社ＡＢＣは令和五年四月一日に設立されました。",
        "東京都千代田区丸の内一丁目"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("ucchiii/japanese-text-toolkit").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "texts": [
        "株式会社ＡＢＣは令和五年四月一日に設立されました。",
        "東京都千代田区丸の内一丁目",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("ucchiii/japanese-text-toolkit").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "texts": [
    "株式会社ＡＢＣは令和五年四月一日に設立されました。",
    "東京都千代田区丸の内一丁目"
  ]
}' |
apify call ucchiii/japanese-text-toolkit --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ucchiii/japanese-text-toolkit"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/g0ZoTCNIeh6mBHX20/builds/cOnwwxhkIsNf3ETLR/openapi.json
