[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81477":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":12,"contributorsCount":12,"subscribersCount":12,"size":12,"stars1d":12,"stars7d":12,"stars30d":12,"stars90d":12,"forks30d":12,"starsTrendScore":12,"compositeScore":12,"rankGlobal":9,"rankLanguage":9,"license":14,"archived":15,"fork":15,"defaultBranch":16,"hasWiki":17,"hasPages":15,"topics":18,"createdAt":9,"pushedAt":9,"updatedAt":19,"readmeContent":20,"aiSummary":21,"trendingCount":12,"starSnapshotCount":12,"syncStatus":22,"lastSyncTime":23,"discoverSource":24},81477,"japanese-text-cleaner","Albertaworlds\u002Fjapanese-text-cleaner","Albertaworlds","Automated Japanese text cleaning web tool with 16-step pipeline, batch processing, encoding auto-detection, and Agent-ready API | 16種類のクリーニングルールを搭載した日本語テキスト自動整形Webツール",null,"TypeScript",29,0,30,"MIT License",false,"main",true,[],"2026-06-12 02:04:15","\u003Cdiv align=\"center\">\n\n# Japanese Text Cleaner\n\n**日语文本清洗工具** · 日本語テキストクリーニングツール\n\nAutomated Japanese text cleaning web application with 16-step pipeline,\\\nbatch processing, encoding auto-detection, and Agent-ready API.\n\nUnicode正規化・全角半角変換・句点統一など16種類のクリーニングルールを搭載した、\\\n日本語テキスト自動整形Webアプリケーション。\n\n[![Next.js](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNext.js-16-black?logo=next.js)](https:\u002F\u002Fnextjs.org\u002F)\n[![React](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReact-19-61DAFB?logo=react)](https:\u002F\u002Freact.dev\u002F)\n[![TypeScript](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTypeScript-5-3178C6?logo=typescript)](https:\u002F\u002Fwww.typescriptlang.org\u002F)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-blue.svg)](.\u002FLICENSE)\n\n**[中文文档](#-中文文档)** · **[English](#-english)** · **[日本語](#-日本語)**\n\n\u003C\u002Fdiv>\n\n---\n\n## 🇨🇳 中文文档\n\n### 功能亮点\n\n| 功能 | 说明 |\n|:-----|:-----|\n| 16 步 Pipeline 引擎 | Unicode 正规化 → 全角半角 → 片假名 → 引号状态机 → 括号 → 标点 → 单句成行 → 空行处理等，严格有序执行 |\n| 三种清洗模式 | 深度清洗（专业文本分析）\u002F 标准清洗（通用文本处理）\u002F 轻量清洗（日常阅览优化） |\n| 批量文件处理 | 拖放上传多个 TXT 文件，一键批量清洗，JSZip 压缩打包导出 |\n| 编码自动检测 | 自动识别 UTF-8 \u002F ShiftJIS \u002F EUC-JP，也支持手动指定 |\n| Agent API | `POST \u002Fapi\u002Fv1\u002Fclean` 固定深度清洗，可集成至 spaCy 等自然语言处理工具链 |\n| API Key 鉴权 | Bearer Token \u002F Query Parameter 两种方式，未配置密钥时自动关闭 |\n\n### 快速开始\n\n**前置要求**：Node.js 20+、pnpm 9+\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002F\u003Cyour-username>\u002Fjapanese-text-cleaner.git\ncd japanese-text-cleaner\npnpm install\npnpm dev\n```\n\n开发服务启动后访问 `http:\u002F\u002Flocalhost:5000`。\n\n生产构建：\n\n```bash\npnpm build\npnpm start\n```\n\n### 环境变量\n\n```bash\ncp .env.example .env.local\n```\n\n| 变量 | 说明 | 默认值 |\n|:-----|:-----|:-------|\n| `CLEAN_API_KEY` | v1 API 鉴权密钥，留空关闭鉴权 | _(空)_ |\n| `PORT` | 服务端口 | `5000` |\n| `COZE_PROJECT_ENV` | 运行环境 `DEV` \u002F `PROD` | `DEV` |\n\n### 项目结构\n\n```\ndocs\u002F                                # 项目文档\n  skill-japanese-text-cleaner.md       # 通用设计 Skill\nscripts\u002F                             # 构建\u002F启动脚本\nsrc\u002F\n  app\u002F\n    api\u002F\n      clean\u002Froute.ts                   # 前端清洗 API（支持自定义选项）\n      v1\u002Fclean\u002Froute.ts                # Agent API（固定深度清洗）\n    layout.tsx\n    page.tsx                           # 主页面\n    globals.css\n  components\u002Fui\u002F                      # shadcn\u002Fui 组件库\n  hooks\u002F\n    use-japanese-cleaner.ts            # 清洗逻辑 Hook（状态管理\u002F文件\u002F编码）\n    use-mobile.ts\n  lib\u002F\n    japanese-cleaner.ts                # 核心清洗引擎（纯函数，零外部依赖）\n    utils.ts\n  server.ts                            # 自定义服务器入口\n```\n\n### 清洗引擎 Pipeline\n\n`src\u002Flib\u002Fjapanese-cleaner.ts` — 纯函数设计，零外部依赖，可独立打包。\n\n```typescript\ncleanJapaneseText(input: string, options: CleanOptions): CleanResult\n```\n\n| 步骤 | 规则 | 关键算法 |\n|:----:|:-----|:---------|\n| 1 | Unicode 正规化 (NFKC) | — |\n| 2 | HTML 标签移除 | 正则替换 |\n| 3 | 全角 → 半角（英数字） | Unicode 范围映射 |\n| 4 | 半角片假名 → 全角 | Unicode 范围映射 |\n| 5 | 换行符统一 (CRLF→LF) | 字符替换 |\n| 6 | 分隔线块删除 | 有限状态机 |\n| 7 | 控制字符移除 | Unicode 类别过滤 |\n| 8 | 引号规范化 | **状态机** — ASCII `\"` → `「」` 配对 |\n| 9 | 括号规范化 | 半角 → 全角映射 |\n| 10 | 标点规范化 | 映射表 |\n| 11 | 行首尾空白去除 | 逐行 trim |\n| 12 | 非日文括号内容删除 | **栈式解析**（支持嵌套） |\n| 13 | 长音符号统一 | 字符替换 |\n| 14 | 连续空格合并 | 正则合并 |\n| 15 | 单句成行 | **两阶段算法**（合并 + 断行） |\n| 16 | 空行处理 | 合并多余 \u002F 删除全部 |\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>三种清洗模式配置对照\u003C\u002Fb>\u003C\u002Fsummary>\n\n| 规则 | 深度清洗 | 标准清洗 | 轻量清洗 |\n|:-----|:--------:|:--------:|:--------:|\n| Unicode 正规化 (NFKC) | ✓ | ✓ | ✓ |\n| 全角 → 半角 | ✓ | ✓ | ✓ |\n| 半角片假名 → 全角 | ✓ | ✓ | ✓ |\n| 空格规范化 | ✓ | ✓ | ✓ |\n| 换行符统一 | ✓ | ✓ | ✓ |\n| 控制字符移除 | ✓ | ✓ | ✓ |\n| 零宽字符移除 | ✓ | ✓ | ✓ |\n| 行首尾空白去除 | ✓ | ✓ | ✓ |\n| 移除多余空行 | — | ✓ | — |\n| 移除所有空行 | ✓ | — | — |\n| 引号规范化 | ✓ | ✓ | ✓ |\n| 括号规范化 | ✓ | ✓ | ✓ |\n| HTML 标签移除 | ✓ | ✓ | ✓ |\n| 标点规范化 | ✓ | ✓ | ✓ |\n| 长音符号统一 | ✓ | ✓ | ✓ |\n| 括号内容删除 | ✓ | ✓ | — |\n| 单句成行 | ✓ | — | — |\n| 分隔线块删除 | ✓ | — | — |\n\n\u003C\u002Fdetails>\n\n### API 文档\n\n#### 请求\n\n```\nPOST \u002Fapi\u002Fv1\u002Fclean\nContent-Type: application\u002Fjson\n```\n\n#### 认证\n\n| 方式 | 格式 |\n|:-----|:-----|\n| Header | `Authorization: Bearer \u003Capi_key>` |\n| Query | `?api_key=\u003Capi_key>` |\n\n> 未配置 `CLEAN_API_KEY` 时鉴权自动关闭\n\n#### 请求体\n\n**方式一 — 纯文本**\n\n```json\n{ \"text\": \"吾輩は猫である。名前はまだ無い。\" }\n```\n\n**方式二 — 文件 base64（自动检测编码）**\n\n```json\n{\n  \"file_base64\": \"5q2j5bi444Gv...\",\n  \"source_encoding\": \"auto\"\n}\n```\n\n`source_encoding` 可选值：`auto`（默认） \u002F `utf-8` \u002F `shift_jis` \u002F `euc-jp`\n\n**方式三 — 批量模式**\n\n```json\n{\n  \"items\": [\n    { \"text\": \"第一段\" },\n    { \"file_base64\": \"...\", \"source_encoding\": \"shift_jis\" },\n    { \"text\": \"第三段\" }\n  ]\n}\n```\n\n最多 100 条。\n\n#### 响应体\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"cleaned\": \"吾輩は猫である。\\n名前はまだ無い。\",\n    \"stats\": {\n      \"originalLength\": 16,\n      \"cleanedLength\": 17,\n      \"removedChars\": -1,\n      \"appliedRules\": [\"Unicode正规化 (NFKC)\", \"单句成行\"]\n    },\n    \"detectedEncoding\": \"utf-8 (direct)\"\n  }\n}\n```\n\n#### 错误码\n\n| code | 说明 |\n|:-----|:-----|\n| `EMPTY_TEXT` | 文本为空 |\n| `MISSING_INPUT` | 未提供 text 或 file_base64 |\n| `INVALID_BASE64` | base64 解码失败 |\n| `EMPTY_ITEMS` | items 数组为空 |\n| `TOO_MANY_ITEMS` | 超过 100 条 |\n| `AUTH_FAILED` | API Key 无效 |\n| `INTERNAL_ERROR` | 服务内部错误 |\n\n### Python 调用示例\n\n```python\nimport requests\n\nAPI_URL = \"http:\u002F\u002Flocalhost:5000\u002Fapi\u002Fv1\u002Fclean\"\nAPI_KEY = \"your-api-key\"\n\ndef clean_text(raw_text: str) -> str:\n    response = requests.post(\n        API_URL,\n        headers={\n            \"Content-Type\": \"application\u002Fjson\",\n            \"Authorization\": f\"Bearer {API_KEY}\",\n        },\n        json={\"text\": raw_text},\n        timeout=30,\n    )\n    result = response.json()\n    if result.get(\"success\"):\n        return result[\"data\"][\"cleaned\"]\n    raise Exception(f\"清洗失败: {result.get('error')}\")\n```\n\n---\n\n## 🇬🇧 English\n\n### Highlights\n\n| Feature | Description |\n|:--------|:------------|\n| 16-step Pipeline Engine | Unicode normalization → full\u002Fhalf-width → katakana → quote state machine → brackets → punctuation → sentence-per-line → blank line handling, executed in strict order |\n| 3 Cleaning Modes | Deep (professional text analysis) \u002F Standard (general processing) \u002F Light (casual reading) |\n| Batch File Processing | Drag-and-drop upload, one-click batch clean, JSZip export |\n| Auto Encoding Detection | UTF-8 \u002F ShiftJIS \u002F EUC-JP with manual override |\n| Agent API | `POST \u002Fapi\u002Fv1\u002Fclean` with fixed deep-cleaning mode, integrates with spaCy and other NLP pipelines |\n| API Key Auth | Bearer Token \u002F Query Parameter, auto-disabled when no key is configured |\n\n### Getting Started\n\n**Prerequisites**: Node.js 20+, pnpm 9+\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002F\u003Cyour-username>\u002Fjapanese-text-cleaner.git\ncd japanese-text-cleaner\npnpm install\npnpm dev\n```\n\nThe dev server starts at `http:\u002F\u002Flocalhost:5000`.\n\nProduction build:\n\n```bash\npnpm build\npnpm start\n```\n\n### Environment Variables\n\n```bash\ncp .env.example .env.local\n```\n\n| Variable | Description | Default |\n|:---------|:------------|:--------|\n| `CLEAN_API_KEY` | API authentication key (empty = no auth) | _(empty)_ |\n| `PORT` | Server port | `5000` |\n| `COZE_PROJECT_ENV` | Runtime environment `DEV` \u002F `PROD` | `DEV` |\n\n### Cleaning Engine Pipeline\n\n`src\u002Flib\u002Fjapanese-cleaner.ts` — Pure function, zero dependencies, independently packagable.\n\n```typescript\ncleanJapaneseText(input: string, options: CleanOptions): CleanResult\n```\n\n| Step | Rule | Algorithm |\n|:----:|:-----|:----------|\n| 1 | Unicode Normalization (NFKC) | — |\n| 2 | HTML Tag Removal | Regex |\n| 3 | Full-width → Half-width (alphanumeric) | Unicode range mapping |\n| 4 | Half-width Katakana → Full-width | Unicode range mapping |\n| 5 | Line Break Unification (CRLF→LF) | Char replacement |\n| 6 | Separator Block Removal | Finite state machine |\n| 7 | Control Character Removal | Unicode category filter |\n| 8 | Quote Normalization | **State machine** — ASCII `\"` → `「」` pairing |\n| 9 | Bracket Normalization | Half-width → Full-width mapping |\n| 10 | Punctuation Normalization | Mapping table |\n| 11 | Line Trimming | Per-line trim |\n| 12 | Non-Japanese Bracket Content Removal | **Stack parser** (nested) |\n| 13 | Long Vowel Unification | Char replacement |\n| 14 | Space Collapsing | Regex merge |\n| 15 | Sentence Per Line | **Two-phase algorithm** (merge + break) |\n| 16 | Blank Line Handling | Merge extra \u002F Remove all |\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Cleaning Mode Comparison\u003C\u002Fb>\u003C\u002Fsummary>\n\n| Rule | Deep | Standard | Light |\n|:-----|:----:|:--------:|:-----:|\n| Unicode Normalization (NFKC) | ✓ | ✓ | ✓ |\n| Full-width → Half-width | ✓ | ✓ | ✓ |\n| Half-width Katakana → Full-width | ✓ | ✓ | ✓ |\n| Space Normalization | ✓ | ✓ | ✓ |\n| Line Break Unification | ✓ | ✓ | ✓ |\n| Control Character Removal | ✓ | ✓ | ✓ |\n| Zero-width Character Removal | ✓ | ✓ | ✓ |\n| Line Trimming | ✓ | ✓ | ✓ |\n| Remove Extra Blank Lines | — | ✓ | — |\n| Remove All Blank Lines | ✓ | — | — |\n| Quote Normalization | ✓ | ✓ | ✓ |\n| Bracket Normalization | ✓ | ✓ | ✓ |\n| HTML Tag Removal | ✓ | ✓ | ✓ |\n| Punctuation Normalization | ✓ | ✓ | ✓ |\n| Long Vowel Unification | ✓ | ✓ | ✓ |\n| Bracket Content Removal | ✓ | ✓ | — |\n| Sentence Per Line | ✓ | — | — |\n| Separator Block Removal | ✓ | — | — |\n\n\u003C\u002Fdetails>\n\n### API Reference\n\n#### Request\n\n```\nPOST \u002Fapi\u002Fv1\u002Fclean\nContent-Type: application\u002Fjson\n```\n\n#### Authentication\n\n| Method | Format |\n|:-------|:-------|\n| Header | `Authorization: Bearer \u003Capi_key>` |\n| Query | `?api_key=\u003Capi_key>` |\n\n> Auth is auto-disabled when `CLEAN_API_KEY` is not configured.\n\n#### Request Body\n\n**Mode 1 — Plain text**\n\n```json\n{ \"text\": \"吾輩は猫である。名前はまだ無い。\" }\n```\n\n**Mode 2 — File base64 (auto-detect encoding)**\n\n```json\n{\n  \"file_base64\": \"5q2j5bi444Gv...\",\n  \"source_encoding\": \"auto\"\n}\n```\n\n`source_encoding` options: `auto` (default) \u002F `utf-8` \u002F `shift_jis` \u002F `euc-jp`\n\n**Mode 3 — Batch**\n\n```json\n{\n  \"items\": [\n    { \"text\": \"First text\" },\n    { \"file_base64\": \"...\", \"source_encoding\": \"shift_jis\" },\n    { \"text\": \"Third text\" }\n  ]\n}\n```\n\nMaximum 100 items per request.\n\n#### Response\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"cleaned\": \"吾輩は猫である。\\n名前はまだ無い。\",\n    \"stats\": {\n      \"originalLength\": 16,\n      \"cleanedLength\": 17,\n      \"removedChars\": -1,\n      \"appliedRules\": [\"Unicode Normalization (NFKC)\", \"Sentence Per Line\"]\n    },\n    \"detectedEncoding\": \"utf-8 (direct)\"\n  }\n}\n```\n\n#### Error Codes\n\n| code | Description |\n|:-----|:------------|\n| `EMPTY_TEXT` | Text is empty |\n| `MISSING_INPUT` | Neither text nor file_base64 provided |\n| `INVALID_BASE64` | Base64 decode failed |\n| `EMPTY_ITEMS` | Items array is empty |\n| `TOO_MANY_ITEMS` | Exceeds 100 items |\n| `AUTH_FAILED` | Invalid API Key |\n| `INTERNAL_ERROR` | Internal server error |\n\n### Python Example\n\n```python\nimport requests\n\nAPI_URL = \"http:\u002F\u002Flocalhost:5000\u002Fapi\u002Fv1\u002Fclean\"\nAPI_KEY = \"your-api-key\"\n\ndef clean_text(raw_text: str) -> str:\n    response = requests.post(\n        API_URL,\n        headers={\n            \"Content-Type\": \"application\u002Fjson\",\n            \"Authorization\": f\"Bearer {API_KEY}\",\n        },\n        json={\"text\": raw_text},\n        timeout=30,\n    )\n    result = response.json()\n    if result.get(\"success\"):\n        return result[\"data\"][\"cleaned\"]\n    raise Exception(f\"Cleaning failed: {result.get('error')}\")\n```\n\n---\n\n## 🇯🇵 日本語\n\n### 概要\n\nUnicode正規化・全角半角変換・空白正規化・句点統一など16種類のクリーニングルールを搭載した、日本語テキスト自動整形Webアプリケーション。\n\n### 主な機能\n\n| 機能 | 説明 |\n|:-----|:-----|\n| 16ステップパイプラインエンジン | Unicode正規化 → 全角半角 → 片仮名 → 引用符状態機械 → 括弧 → 句点 →一文一行 → 空行処理など、厳密な順序で実行 |\n| 3つのクリーニングモード | ディープクリーニング（専門テキスト分析）\u002F スタンダード（汎用テキスト処理）\u002F ライト（日常閲覧最適化） |\n| バッチファイル処理 | ドラッグ＆ドロップで複数TXTファイルをアップロード、一括クリーニング、JSZipでZIPエクスポート |\n| エンコーディング自動検出 | UTF-8 \u002F Shift_JIS \u002F EUC-JPを自動識別、手動指定にも対応 |\n| Agent API | `POST \u002Fapi\u002Fv1\u002Fclean` 固定ディープクリーニングモード、spaCyなどのNLPツールチェーンに統合可能 |\n| API Key認証 | Bearer Token \u002F Query Parameter、未設定時は認証を自動無効化 |\n\n### クイックスタート\n\n**前提条件**：Node.js 20+、pnpm 9+\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002F\u003Cyour-username>\u002Fjapanese-text-cleaner.git\ncd japanese-text-cleaner\npnpm install\npnpm dev\n```\n\n開発サーバーは `http:\u002F\u002Flocalhost:5000` で起動します。\n\n本番ビルド：\n\n```bash\npnpm build\npnpm start\n```\n\n### 環境変数\n\n```bash\ncp .env.example .env.local\n```\n\n| 変数 | 説明 | デフォルト |\n|:-----|:-----|:----------|\n| `CLEAN_API_KEY` | v1 API認証キー、空欄で認証無効 | _(空)_ |\n| `PORT` | サービスポート | `5000` |\n| `COZE_PROJECT_ENV` | 実行環境 `DEV` \u002F `PROD` | `DEV` |\n\n### クリーニングエンジンパイプライン\n\n`src\u002Flib\u002Fjapanese-cleaner.ts` — 純粋関数、外部依存ゼロ、単独パッケージ化可能。\n\n| ステップ | ルール | アルゴリズム |\n|:--------:|:-------|:------------|\n| 1 | Unicode正規化 (NFKC) | — |\n| 2 | HTMLタグ削除 | 正規表現 |\n| 3 | 全角 → 半角（英数字） | Unicode範囲マッピング |\n| 4 | 半角カタカナ → 全角 | Unicode範囲マッピング |\n| 5 | 改行コード統一 (CRLF→LF) | 文字置換 |\n| 6 | 区切り線ブロック削除 | 有限状態機械 |\n| 7 | 制御文字削除 | Unicodeカテゴリフィルタ |\n| 8 | 引用符正規化 | **状態機械** — ASCII `\"` → `「」`ペアリング |\n| 9 | 括弧正規化 | 半角 → 全角マッピング |\n| 10 | 句点正規化 | マッピングテーブル |\n| 11 | 行頭行末空白削除 | 行ごとtrim |\n| 12 | 非日本語括弧内容削除 | **スタックパーサー**（ネスト対応） |\n| 13 | 長音記号統一 | 文字置換 |\n| 14 | 連続スペース統合 | 正規表現マージ |\n| 15 | 一文一行 | **二段階アルゴリズム**（結合 + 改行） |\n| 16 | 空行処理 | 余分な空行統合 \u002F 全空行削除 |\n\n### ライセンス\n\n[MIT](.\u002FLICENSE)\n","Japanese Text Cleaner 是一个自动化日本语文本清洗的Web工具，具备16步处理流程、批量处理、编码自动检测及Agent-ready API。其核心功能包括Unicode规范化、全角半角转换、标点统一等16种清洗规则，支持深度、标准和轻量三种清洗模式以适应不同需求。该工具基于TypeScript开发，使用了Next.js和React框架构建用户界面，并提供API供自然语言处理工具链集成。它非常适合需要对日语文档进行预处理的场景，如文本分析、数据清洗或提高阅读体验等。",2,"2026-06-11 04:05:13","CREATED_QUERY"]