[
  {
    "path": ".dockerignore",
    "content": "# Git相关\n.git\n.gitignore\n.github\n\n# Python缓存文件\n__pycache__/\n*.py[cod]\n*$py.class\n*.so\n.Python\n.pytest_cache/\n.coverage\nhtmlcov/\n.tox/\n.nox/\n.hypothesis/\n.egg-info/\n.eggs/\n*.egg\nbuild/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\nwheels/\n*.egg-info/\n.installed.cfg\n\n# IDE相关\n.idea/\n.vscode/\n*.sublime-project\n*.sublime-workspace\n.project\n.spyderproject\n.spyproject\n.ropeproject\n\n# 环境相关\nenv/\nvenv/\nENV/\nenv.bak/\nvenv.bak/\n.env\n.venv\n\n# 日志文件\nlogs/\n*.log\n\n# 数据文件夹（可能包含测试数据）\ndata/\ntest_images/\n\n# Docker相关\nDockerfile\ndocker-compose.yml\n.dockerignore\n\n# 文档\ndocs/\n*.md\n\n# 特定排除（自定义模型或测试数据）\ncustom_models/\n*.zip\n*.tar.gz\n*.csv\n*.json\n*.txt\n!requirements.txt "
  },
  {
    "path": ".idea/.gitignore",
    "content": "# Default ignored files\n/shelf/\n/workspace.xml\n# Editor-based HTTP Client requests\n/httpRequests/\n# Datasource local storage ignored files\n/dataSources/\n/dataSources.local.xml\n"
  },
  {
    "path": ".idea/ddddocr.iml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module type=\"PYTHON_MODULE\" version=\"4\">\n  <component name=\"NewModuleRootManager\">\n    <content url=\"file://$MODULE_DIR$\" />\n    <orderEntry type=\"jdk\" jdkName=\"ddddocrpy13\" jdkType=\"Python SDK\" />\n    <orderEntry type=\"sourceFolder\" forTests=\"false\" />\n  </component>\n</module>"
  },
  {
    "path": ".idea/inspectionProfiles/profiles_settings.xml",
    "content": "<component name=\"InspectionProjectProfileManager\">\n  <settings>\n    <option name=\"USE_PROJECT_PROFILE\" value=\"false\" />\n    <version value=\"1.0\" />\n  </settings>\n</component>"
  },
  {
    "path": ".idea/misc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"Black\">\n    <option name=\"sdkName\" value=\"C:\\Users\\sml2h\\anaconda3\" />\n  </component>\n  <component name=\"ProjectRootManager\" version=\"2\" project-jdk-name=\"ddddocrpy13\" project-jdk-type=\"Python SDK\" />\n</project>"
  },
  {
    "path": ".idea/modules.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"ProjectModuleManager\">\n    <modules>\n      <module fileurl=\"file://$PROJECT_DIR$/.idea/ddddocr.iml\" filepath=\"$PROJECT_DIR$/.idea/ddddocr.iml\" />\n    </modules>\n  </component>\n</project>"
  },
  {
    "path": ".idea/vcs.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"VcsDirectoryMappings\">\n    <mapping directory=\"\" vcs=\"Git\" />\n  </component>\n</project>"
  },
  {
    "path": "Dockerfile",
    "content": "# 基础镜像使用 Python 3.10 (slim 版本可以减小镜像体积)\nFROM python:3.10-slim\n\n# 镜像作者信息\nLABEL maintainer=\"sml2h3\"\nLABEL description=\"DdddOcr - 通用验证码识别API服务\"\n\n# 设置工作目录\nWORKDIR /app\n\n# 安装系统依赖 (apt-get 非交互式安装并在安装后清理缓存以减小镜像大小)\nRUN apt-get update && \\\n    apt-get install -y --no-install-recommends \\\n    build-essential \\\n    curl \\\n    libgl1-mesa-glx \\\n    libglib2.0-0 \\\n    && apt-get clean \\\n    && rm -rf /var/lib/apt/lists/*\n\n# 复制项目依赖文件\nCOPY requirements.txt .\n\n# 安装 Python 依赖\n# --no-cache-dir: 不缓存下载的包，减小镜像大小\n# -r requirements.txt: 从文件安装依赖\nRUN pip install --no-cache-dir -r requirements.txt\n\n# 复制项目文件到工作目录\nCOPY . .\n\n# 设置 Python 路径\nENV PYTHONPATH=/app\n\n# 设置 DdddOcr API 服务的默认环境变量\n# 这些环境变量可以在 docker run 或 docker-compose 中覆盖\n\n# API 服务器配置\nENV DDDDOCR_HOST=0.0.0.0       # 监听所有网络接口\nENV DDDDOCR_PORT=8000          # 服务运行端口\nENV DDDDOCR_WORKERS=1          # API 服务工作进程数\n\n# OCR 引擎配置\nENV DDDDOCR_OCR=true           # 是否启用 OCR 功能\nENV DDDDOCR_DET=false          # 是否启用目标检测功能\nENV DDDDOCR_OLD=false          # 是否使用旧版 OCR 模型\nENV DDDDOCR_BETA=false         # 是否使用 Beta 版 OCR 模型\nENV DDDDOCR_USE_GPU=false      # 是否使用 GPU 加速\nENV DDDDOCR_DEVICE_ID=0        # GPU 设备 ID\nENV DDDDOCR_SHOW_AD=true       # 是否显示广告\n\n# 自定义模型配置（需要挂载卷才能访问）\nENV DDDDOCR_IMPORT_ONNX_PATH=\"\" # 自定义模型路径\nENV DDDDOCR_CHARSETS_PATH=\"\"    # 自定义字符集路径\n\n# 暴露端口（与 DDDDOCR_PORT 环境变量保持一致）\nEXPOSE 8000\n\n# 容器启动时执行的命令，使用 python -m ddddocr api 启动 API 服务\n# 参数从环境变量读取\nCMD python -m ddddocr api \\\n    --host=${DDDDOCR_HOST} \\\n    --port=${DDDDOCR_PORT} \\\n    --workers=${DDDDOCR_WORKERS} \\\n    --ocr=${DDDDOCR_OCR} \\\n    --det=${DDDDOCR_DET} \\\n    --old=${DDDDOCR_OLD} \\\n    --beta=${DDDDOCR_BETA} \\\n    --use-gpu=${DDDDOCR_USE_GPU} \\\n    --device-id=${DDDDOCR_DEVICE_ID} \\\n    --show-ad=${DDDDOCR_SHOW_AD} \\\n    --import-onnx-path=${DDDDOCR_IMPORT_ONNX_PATH} \\\n    --charsets-path=${DDDDOCR_CHARSETS_PATH}\n\n# 健康检查，确保容器正常运行\nHEALTHCHECK --interval=30s --timeout=10s --retries=3 \\\n  CMD curl -f http://localhost:${DDDDOCR_PORT}/health || exit 1 \n"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\nCopyright © 2022 <copyright holders>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
  },
  {
    "path": "MANIFEST.in",
    "content": "recursive-include ddddocr common.onnx\nrecursive-include ddddocr common_old.onnx\nrecursive-include ddddocr common_det.onnx"
  },
  {
    "path": "README.md",
    "content": "# DdddOcr - 通用验证码识别SDK\n\n<p align=\"center\">\n  <img src=\"logo.png\" alt=\"DdddOcr Logo\" width=\"300\">\n</p>\n\n<p align=\"center\">\n  <strong>一个简单易用的通用验证码识别Python库</strong>\n</p>\n\n## 目录\n\n- [赞助合作商](#赞助合作商)\n- [项目介绍](#项目介绍)\n- [环境支持](#环境支持)\n- [安装方法](#安装方法)\n- [功能概览](#功能概览)\n- [初始化参数详解](#初始化参数详解)\n  - [参数详细说明](#参数详细说明)\n  - [功能组合与冲突](#功能组合与冲突)\n  - [模型选择指南](#模型选择指南)\n  - [性能优化参数](#性能优化参数)\n- [详细使用说明](#详细使用说明)\n  - [文字识别功能](#文字识别功能)\n    - [基础OCR识别](#基础ocr识别)\n    - [OCR概率输出](#ocr概率输出)\n    - [自定义字符范围](#自定义字符范围)\n    - [颜色过滤功能](#颜色过滤功能)\n  - [目标检测功能](#目标检测功能)\n  - [滑块验证码处理](#滑块验证码处理)\n    - [算法1：边缘匹配](#算法1边缘匹配)\n    - [算法2：图像差异比较](#算法2图像差异比较)\n  - [自定义模型导入](#自定义模型导入)\n- [高级用法](#高级用法)\n  - [批量处理](#批量处理)\n  - [多线程优化](#多线程优化)\n  - [验证码预处理](#验证码预处理)\n- [常见问题](#常见问题)\n  - [初始化速度慢](#初始化速度慢)\n  - [识别准确率不高](#识别准确率不高)\n  - [GPU加速](#gpu加速)\n  - [处理复杂验证码](#如何处理复杂验证码)\n  - [内存占用过高](#内存占用过高)\n  - [参数冲突问题](#参数冲突问题)\n  - [支持的图片格式](#支持的图片格式)\n  - [多线程并发问题](#多线程并发问题)\n- [项目技术支持](#项目技术支持)\n- [使用示例](#使用示例)\n- [许可证](#许可证)\n\n## 赞助合作商\n\n|                                                            | 赞助合作商 | 推荐理由                                                                                             |\n|------------------------------------------------------------|------------|--------------------------------------------------------------------------------------------------|\n| ![YesCaptcha](https://cdn.wenanzhe.com/img/yescaptcha.png) | [YesCaptcha](https://yescaptcha.com/i/NSwk7i) | 谷歌reCaptcha验证码 / hCaptcha验证码 / funCaptcha验证码商业级识别接口 [点我](https://yescaptcha.com/i/NSwk7i) 直达VIP4 |\n| ![超级鹰](https://cdn.wenanzhe.com/img/logo.gif) | [超级鹰](https://www.chaojiying.com/) | 全球领先的智能图片分类及识别商家，安全、准确、高效、稳定、开放，强大的技术及校验团队，支持大并发。7*24h作业进度管理 |\n| ![Malenia](https://cdn.wenanzhe.com/img/malenia.png!/scale/50)    | [Malenia](https://malenia.iinti.cn/malenia-doc/) | Malenia企业级代理IP网关平台/代理IP分销软件 |\n| 雨云VPS    | [注册首月5折](https://www.rainyun.com/ddddocr_) | 浙江节点低价大带宽，100M每月30元 |\n\n## 项目介绍\n\nDdddOcr 是一个通用验证码离线本地识别SDK，由 [sml2h3](https://github.com/sml2h3) 与 [kerlomz](https://github.com/kerlomz) 共同开发完成。该项目通过大批量生成随机数据进行深度网络训练，可以识别各种类型的验证码，包括：\n\n- 常见的数字字母组合验证码\n- 中文验证码\n- 滑块验证码\n- 各种特殊字符验证码\n\n项目设计理念是\"最简依赖\"，尽量减少用户的配置和使用成本，提供简单易用的API接口。\n\n## 环境支持\n\n| 系统 | CPU | GPU | 最大支持Python版本 | 备注 |\n|-----|-----|-----|--------------|-----|\n| Windows 64位 | ✓ | ✓ | 3.12 | 部分版本Windows需要安装[vc运行库](https://www.ghxi.com/yxkhj.html) |\n| Linux 64 / ARM64 | ✓ | ✓ | 3.12 | |\n| macOS X64 | ✓ | ✓ | 3.12 | M1/M2/M3芯片用户请参考[相关说明](https://github.com/sml2h3/ddddocr/issues/67) |\n\n不支持的环境：\n- Windows 32位\n- Linux 32位\n\n## 安装方法\n\n### 从PyPI安装（推荐）\n\n```bash\npip install ddddocr\n```\n\n### 从源码安装\n\n```bash\ngit clone https://github.com/sml2h3/ddddocr.git\ncd ddddocr\npip install .\n```\n\n### 安装 API 依赖（可选）\n\n```bash\npip install \".[api]\"\n```\n\n> **注意**：请勿直接在ddddocr项目的根目录内直接import ddddocr，请确保你的开发项目目录名称不为ddddocr。\n\n## 功能概览\n\nDdddOcr提供以下核心功能：\n\n| 功能 | 描述 | 初始化参数 |\n|-----|-----|----------|\n| 文字识别 | 识别图片中的文字内容 | `ocr=True`（默认） |\n| 目标检测 | 检测图片中的目标位置 | `det=True` |\n| 滑块验证码识别 | 识别滑块验证码的缺口位置 | `ocr=False` |\n| 自定义模型导入 | 导入自定义训练的模型 | `import_onnx_path=\"模型路径\"` |\n\n## 初始化参数详解\n\n`DdddOcr` 类初始化时支持多种参数配置，以适应不同的使用场景：\n\n```python\nddddocr.DdddOcr(\n    ocr=True,           # 是否启用OCR功能\n    det=False,          # 是否启用目标检测功能\n    old=False,          # 是否使用旧版OCR模型\n    beta=False,         # 是否使用Beta版OCR模型（新模型）\n    use_gpu=False,      # 是否使用GPU加速\n    device_id=0,        # 使用的GPU设备ID\n    show_ad=True,       # 是否显示广告信息\n    import_onnx_path=\"\", # 自定义模型路径\n    charsets_path=\"\",    # 自定义字符集路径\n    max_image_bytes=None, # 单图最大字节数（默认 8MB）\n    max_image_side=None   # 单图最长边限制（默认 4096px）\n)\n```\n\n### 参数详细说明\n\n| 参数 | 类型 | 默认值 | 说明 |\n|-----|-----|-----|-----|\n| `ocr` | bool | True | 是否启用OCR功能，用于识别图片中的文字。**互斥性**：当`det=True`时会强制关闭OCR |\n| `det` | bool | False | 是否启用目标检测功能，用于检测图片中的目标位置。**互斥性**：`det=True`会覆盖`ocr=True` |\n| `old` | bool | False | 兼容参数，当前不会改变模型选择（默认即使用旧版模型） |\n| `beta` | bool | False | 是否使用Beta版OCR模型（新模型），对某些验证码识别效果更好。**互斥性**：与`old=True`参数互斥（但`old`当前不生效） |\n| `use_gpu` | bool | False | 是否使用GPU加速。**依赖关系**：需要安装CUDA和相应的onnxruntime-gpu版本，否则会初始化失败 |\n| `device_id` | int | 0 | 使用的GPU设备ID。**依赖关系**：仅在`use_gpu=True`时生效，指定使用哪个GPU设备 |\n| `show_ad` | bool | True | 是否在初始化时显示广告信息 |\n| `import_onnx_path` | str | \"\" | 自定义模型的onnx文件路径。**依赖关系**：设置此参数时，`charsets_path`参数必须同时提供；此时`ocr/det`设置会被忽略 |\n| `charsets_path` | str | \"\" | 自定义字符集的json文件路径。**依赖关系**：必须与`import_onnx_path`一起使用，否则无效 |\n| `max_image_bytes` | int/str | 8MB | 单图最大字节数上限（入参可为 int 或数字字符串） |\n| `max_image_side` | int/str | 4096 | 单图最长边像素上限（入参可为 int 或数字字符串） |\n\n### 功能组合与冲突\n\n根据参数组合，ddddocr具有不同的工作模式：\n\n1. **标准OCR模式**：\n   - 参数设置：`ocr=True, det=False`（默认）\n   - 功能：识别图片中的文字\n\n2. **目标检测模式**：\n   - 参数设置：`ocr=False, det=True`\n   - 功能：检测图片中的目标位置\n   - 注意：同时设置`ocr=True, det=True`时，会进入目标检测模式（`det`优先）\n\n3. **滑块识别模式**：\n   - 参数设置：`ocr=False, det=False`\n   - 功能：使用滑块匹配算法（需调用`slide_match`或`slide_comparison`方法）\n\n4. **自定义模型模式**：\n   - 参数设置：`import_onnx_path=\"模型路径\", charsets_path=\"字符集路径\"`\n   - 功能：使用自定义训练的模型进行识别\n   - 注意：设置此模式时，`ocr`和`det`参数会被忽略，且自定义字符集文件需包含 `charset/word/image/channel` 字段\n\n5. **OCR模型选择**：\n   - 默认模型：不设置特殊参数（当前使用 `common_old.onnx`）\n   - Beta模型：`beta=True`（使用 `common.onnx`）\n   - 旧版模型参数：`old=True`（当前不改变模型，仅为兼容保留）\n   - 注意：`beta`和`old`参数互斥，但`old`当前不生效\n\n### 模型选择指南\n\n- **默认模型**：当前默认使用 `common_old.onnx`，适用于多数简单验证码场景\n- **Beta模型**：`beta=True` 使用 `common.onnx`，对部分复杂验证码效果更好\n- **自定义模型**：当默认模型无法满足需求时，可以通过[dddd_trainer](https://github.com/sml2h3/dddd_trainer)训练自己的模型\n\n### 性能优化参数\n\n- **GPU加速**：对于处理大量图片时，开启GPU加速可显著提升性能\n  ```python\n  ocr = ddddocr.DdddOcr(use_gpu=True, device_id=0)\n  ```\n  \n- **GPU设备选择**：在多GPU环境中，可通过`device_id`指定使用的GPU\n  ```python\n  # 使用第二张GPU卡\n  ocr = ddddocr.DdddOcr(use_gpu=True, device_id=1)\n  ```\n\n- **关闭广告显示**：在生产环境中可关闭广告提示\n  ```python\n  ocr = ddddocr.DdddOcr(show_ad=False)\n  ```\n\n## 详细使用说明\n\n### 文字识别功能\n\n#### 基础OCR识别\n\n主要用于识别单行文字，如常见的英数验证码等。支持中文、英文、数字以及部分特殊字符的识别。\n\n```python\nimport ddddocr\n\n# 初始化OCR对象\nocr = ddddocr.DdddOcr()\n\n# 读取图片\nwith open(\"验证码图片.jpg\", \"rb\") as f:\n    image = f.read()\n\n# 识别图片\nresult = ocr.classification(image)\nprint(result)  # 输出识别结果\n```\n\n**OCR识别示例图片**\n\n**参考例图**\n\n包括且不限于以下图片\n\n<img src=\"https://cdn.wenanzhe.com/img/20210715211733855.png\" alt=\"captcha\" width=\"150\">\n<img src=\"https://cdn.wenanzhe.com/img/78b7f57d-371d-4b65-afb2-d19608ae1892.png\" alt=\"captcha\" width=\"150\">\n<img src=\"https://cdn.wenanzhe.com/img/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20211226142305.png\" alt=\"captcha\" width=\"150\">\n<img src=\"https://cdn.wenanzhe.com/img/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20211226142325.png\" alt=\"captcha\" width=\"150\">\n<img src=\"https://cdn.wenanzhe.com/img/2AMLyA_fd83e1f1800e829033417ae6dd0e0ae0.png\" alt=\"captcha\" width=\"150\">\n<img src=\"https://cdn.wenanzhe.com/img/aabd_181ae81dd5526b8b89f987d1179266ce.jpg\" alt=\"captcha\" width=\"150\">\n<br />\n<img src=\"https://cdn.wenanzhe.com/img/2bghz_b504e9f9de1ed7070102d21c6481e0cf.png\" alt=\"captcha\" width=\"150\">\n<img src=\"https://cdn.wenanzhe.com/img/0000_z4ecc2p65rxc610x.jpg\" alt=\"captcha\" width=\"150\">\n<img src=\"https://cdn.wenanzhe.com/img/2acd_0586b6b36858a4e8a9939db8a7ec07b7.jpg\" alt=\"captcha\" width=\"150\">\n<img src=\"https://cdn.wenanzhe.com/img/2a8r_79074e311d573d31e1630978fe04b990.jpg\" alt=\"captcha\" width=\"150\">\n<img src=\"https://cdn.wenanzhe.com/img/aftf_C2vHZlk8540y3qAmCM.bmp\" alt=\"captcha\" width=\"150\">\n<img src=\"https://cdn.wenanzhe.com/img/%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_20211226144057.png\" alt=\"captcha\" width=\"150\">\n\n**OCR模型选择**\n\nDdddOcr内置两套OCR模型，可以通过`beta`参数切换：\n\n```python\n# 使用第二套OCR模型\nocr = ddddocr.DdddOcr(beta=True)\n```\n\n**透明PNG图片处理**\n\n对于透明黑色PNG图片，可以使用`png_fix`参数（对所有 OCR 模式生效）：\n\n```python\nresult = ocr.classification(image, png_fix=True)\n```\n\n> **注意**：`png_fix` 仅对带透明通道的图片生效；初始化DdddOcr对象只需要一次，不要在每次识别时都重新初始化，这会导致速度变慢。\n\n#### OCR概率输出\n\n可以获取OCR识别结果的概率分布，便于进行更灵活的结果处理：\n\n```python\nimport ddddocr\n\nocr = ddddocr.DdddOcr()\nimage = open(\"test.jpg\", \"rb\").read()\n\n# 获取识别结果的概率分布\nresult = ocr.classification(image, probability=True)\n\n# 处理概率结果\ns = \"\"\nfor i in result['probability']:\n    s += result['charsets'][i.index(max(i))]\n\nprint(s)\n```\n\n**概率输出示例**（仅对内置模型生效，自定义模型会忽略`probability=True`并直接返回字符串）：\n\n```python\n# 概率输出结果示例\n{\n    'charsets': ['', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', ...],\n    'probability': [\n        [0.01, 0.02, 0.01, 0.03, 0.02, 0.01, 0.02, 0.75, 0.03, 0.05, 0.01, ...],  # 第一个字符的概率分布\n        [0.01, 0.01, 0.02, 0.01, 0.03, 0.02, 0.01, 0.02, 0.01, 0.80, 0.01, ...],  # 第二个字符的概率分布\n        ...\n    ]\n}\n```\n\n#### 自定义字符范围\n\n可以通过`set_ranges`方法限定OCR识别的字符范围：\n\n```python\nimport ddddocr\n\nocr = ddddocr.DdddOcr()\nimage = open(\"test.jpg\", \"rb\").read()\n\n# 设置识别范围为数字\nocr.set_ranges(0)  # 等同于 ocr.set_ranges(\"0123456789\")\n\n# 或自定义字符范围\nocr.set_ranges(\"0123456789+-x/=\")\n\nresult = ocr.classification(image)\nprint(result)\n```\n\n**内置字符范围参数**：\n\n| 参数值 | 含义 |\n|-----|-----|\n| 0 | 纯数字 0-9 |\n| 1 | 纯小写英文 a-z |\n| 2 | 纯大写英文 A-Z |\n| 3 | 小写英文 + 大写英文 |\n| 4 | 小写英文 + 数字 |\n| 5 | 大写英文 + 数字 |\n| 6 | 小写英文 + 大写英文 + 数字 |\n| 7 | 默认字符库 - 小写英文 - 大写英文 - 数字 |\n\n#### 颜色过滤功能\n\n对于一些特殊的验证码，可以通过颜色过滤来提高识别准确率：\n\n```python\nimport ddddocr\n\nocr = ddddocr.DdddOcr()\nimage = open(\"test.jpg\", \"rb\").read()\n\n# 只保留红色和蓝色部分\nresult = ocr.classification(image, colors=[\"red\", \"blue\"])\nprint(result)\n```\n\n**支持的颜色**：\n- red (红色)\n- green (绿色)\n- blue (蓝色)\n- yellow (黄色)\n- orange (橙色)\n- purple (紫色)\n- pink (粉色)\n- brown (棕色)\n\n也可以自定义颜色范围：\n\n```python\n# 自定义颜色范围\ncustom_ranges = {\n    'light_blue': [(90, 30, 30), (110, 255, 255)]  # HSV颜色空间\n}\n\nresult = ocr.classification(image, colors=[\"light_blue\"], custom_color_ranges=custom_ranges)\n```\n\n> **提示**：`custom_color_ranges` 只有在 `colors` 列表包含对应键名时才会生效。\n\n### 目标检测功能\n\n用于检测图像中可能的目标主体位置，返回目标的边界框坐标：\n\n```python\nimport ddddocr\nimport cv2\n\n# 初始化检测对象\ndet = ddddocr.DdddOcr(det=True, ocr=False)\n\n# 读取图片\nwith open(\"test.jpg\", 'rb') as f:\n    image = f.read()\n\n# 检测目标\nbboxes = det.detection(image)\nprint(bboxes)  # 输出格式：[[x1, y1, x2, y2], ...]\n\n# 可视化检测结果\nim = cv2.imread(\"test.jpg\")\nfor bbox in bboxes:\n    x1, y1, x2, y2 = bbox\n    im = cv2.rectangle(im, (x1, y1), (x2, y2), color=(0, 0, 255), thickness=2)\ncv2.imwrite(\"result.jpg\", im)\n```\n\n**目标检测示例**：\n\n**参考例图**\n\n包括且不限于以下图片\n\n<img src=\"https://cdn.wenanzhe.com/img/page1_1.jpg\" alt=\"captcha\" width=\"200\">\n<img src=\"https://cdn.wenanzhe.com/img/page1_2.jpg\" alt=\"captcha\" width=\"200\">\n<img src=\"https://cdn.wenanzhe.com/img/page1_3.jpg\" alt=\"captcha\" width=\"200\">\n<img src=\"https://cdn.wenanzhe.com/img/page1_4.jpg\" alt=\"captcha\" width=\"200\">\n<br />\n<img src=\"https://cdn.wenanzhe.com/img/result.jpg\" alt=\"captcha\" width=\"200\">\n<img src=\"https://cdn.wenanzhe.com/img/result2.jpg\" alt=\"captcha\" width=\"200\">\n<img src=\"https://cdn.wenanzhe.com/img/result4.jpg\" alt=\"captcha\" width=\"200\">\n### 滑块验证码处理\n\nDdddOcr提供两种滑块验证码处理算法：\n\n#### 算法1：边缘匹配\n\n适用于有透明背景的滑块图片，通过边缘检测找到滑块在背景图中的位置：\n\n```python\nimport ddddocr\n\n# 初始化滑块检测对象\nslide = ddddocr.DdddOcr(det=False, ocr=False)\n\n# 读取滑块图和背景图\nwith open('target.png', 'rb') as f:\n    target_bytes = f.read()\n\nwith open('background.png', 'rb') as f:\n    background_bytes = f.read()\n\n# 匹配位置\nres = slide.slide_match(target_bytes, background_bytes)\nprint(f\"滑块位置: {res}\")\n\n# 可视化结果\nbackground = cv2.imdecode(np.frombuffer(background_bytes, np.uint8), cv2.IMREAD_COLOR)\nx1, y1, x2, y2 = res[\"target\"]\n\n# 在背景图上绘制匹配位置\ncv2.rectangle(background, (x1, y1), (x2, y2), (0, 255, 0), 2)\n\n# 显示结果\nplt.figure(figsize=(10, 6))\nplt.imshow(cv2.cvtColor(background, cv2.COLOR_BGR2RGB))\nplt.title(\"滑块匹配结果\")\nplt.axis('off')\nplt.savefig(\"slide_result.jpg\")\nplt.show()\n```\n\n**滑块匹配示例**：\n\n<table>\n  <tr>\n    <td align=\"center\">\n      <img src=\"https://cdn.wenanzhe.com/img/b.png\" width=\"50\"/><br/>\n      <strong>滑块图</strong>\n    </td>\n    <td align=\"center\">\n      <img src=\"https://cdn.wenanzhe.com/img/a.png\" width=\"300\"/><br/>\n      <strong>背景图</strong>\n    </td>\n  </tr>\n</table>\n\n对于没有透明背景的滑块图，可以使用`simple_target`参数：\n\n```python\nres = slide.slide_match(target_bytes, background_bytes, simple_target=True)\n```\n\n#### 算法2：图像差异比较\n\n适用于比较两张图片的不同之处，找出滑块缺口位置：\n\n```python\nimport ddddocr\n\nslide = ddddocr.DdddOcr(det=False, ocr=False)\n\n# 读取带有缺口阴影的图片和完整图片\nwith open('bg.jpg', 'rb') as f:\n    target_bytes = f.read()\n\nwith open('fullpage.jpg', 'rb') as f:\n    background_bytes = f.read()\n\n# 比较差异\nres = slide.slide_comparison(target_bytes, background_bytes)\nprint(res)  # 输出格式：{\"target\": [x, y]}\n```\n\n**图像差异比较示例**：\n\n<table>\n  <tr>\n    <td align=\"center\">\n      <img src=\"https://cdn.wenanzhe.com/img/bg.jpg\" width=\"300\"/><br/>\n      <strong>带缺口阴影的图片</strong>\n    </td>\n    <td align=\"center\">\n      <img src=\"https://cdn.wenanzhe.com/img/fullpage.jpg\" width=\"300\"/><br/>\n      <strong>完整图片</strong>\n    </td>\n  </tr>\n</table>\n\n### 自定义模型导入\n\nDdddOcr支持导入通过[dddd_trainer](https://github.com/sml2h3/dddd_trainer)训练的自定义模型：\n\n```python\nimport ddddocr\n\n# 导入自定义模型\nocr = ddddocr.DdddOcr(\n    det=False, \n    ocr=False, \n    import_onnx_path=\"mymodel.onnx\", \n    charsets_path=\"charsets.json\"\n)\n\nwith open('test.jpg', 'rb') as f:\n    image_bytes = f.read()\n\nres = ocr.classification(image_bytes)\nprint(res)\n```\n\n## 高级用法\n\n### 批量处理\n\n对大量验证码进行批量处理时，保持OCR实例的复用可以显著提高效率：\n\n```python\nimport ddddocr\nimport os\nimport time\n\n# 初始化OCR对象（只需一次）\nocr = ddddocr.DdddOcr()\n\n# 批量处理目录中的所有图片\ndef batch_process(directory):\n    results = {}\n    \n    start_time = time.time()\n    for filename in os.listdir(directory):\n        if filename.endswith(('.png', '.jpg', '.jpeg', '.bmp')):\n            file_path = os.path.join(directory, filename)\n            \n            with open(file_path, 'rb') as f:\n                image = f.read()\n                \n            # 使用同一个OCR实例处理所有图片\n            result = ocr.classification(image)\n            results[filename] = result\n    \n    end_time = time.time()\n    print(f\"处理 {len(results)} 张图片耗时: {end_time - start_time:.2f} 秒\")\n    return results\n\n# 使用示例\nresults = batch_process(\"./captchas/\")\nfor filename, text in results.items():\n    print(f\"{filename}: {text}\")\n```\n\n### 多线程优化\n\n在多线程环境下使用时，应当为每个线程创建独立的OCR实例：\n\n```python\nimport ddddocr\nimport concurrent.futures\nimport os\n\ndef process_image(file_path):\n    # 每个线程创建自己的OCR实例\n    ocr = ddddocr.DdddOcr()\n    \n    with open(file_path, 'rb') as f:\n        image = f.read()\n    \n    result = ocr.classification(image)\n    return os.path.basename(file_path), result\n\ndef parallel_process(directory, max_workers=4):\n    file_paths = [os.path.join(directory, f) for f in os.listdir(directory) \n                 if f.endswith(('.png', '.jpg', '.jpeg', '.bmp'))]\n    \n    results = {}\n    with concurrent.futures.ThreadPoolExecutor(max_workers=max_workers) as executor:\n        future_to_file = {executor.submit(process_image, file_path): file_path for file_path in file_paths}\n        \n        for future in concurrent.futures.as_completed(future_to_file):\n            filename, result = future.result()\n            results[filename] = result\n    \n    return results\n\n# 使用示例\nresults = parallel_process(\"./captchas/\", max_workers=8)\n```\n\n### 验证码预处理\n\n对于干扰较多的验证码，可以先进行预处理再识别：\n\n```python\nimport ddddocr\nimport cv2\nimport numpy as np\nfrom PIL import Image\nimport io\n\ndef preprocess_captcha(image_bytes):\n    # 转换为OpenCV格式\n    nparr = np.frombuffer(image_bytes, np.uint8)\n    img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)\n    \n    # 灰度化\n    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)\n    \n    # 二值化\n    _, binary = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY_INV)\n    \n    # 去除小噪点\n    kernel = np.ones((2, 2), np.uint8)\n    opening = cv2.morphologyEx(binary, cv2.MORPH_OPEN, kernel)\n    \n    # 转回字节流\n    is_success, buffer = cv2.imencode(\".jpg\", opening)\n    processed_bytes = io.BytesIO(buffer).getvalue()\n    \n    return processed_bytes\n\n# 使用示例\nocr = ddddocr.DdddOcr()\n\nwith open(\"noisy_captcha.jpg\", \"rb\") as f:\n    image_bytes = f.read()\n\n# 预处理验证码\nprocessed_bytes = preprocess_captcha(image_bytes)\n\n# 识别处理后的图片\nresult = ocr.classification(processed_bytes)\nprint(f\"验证码识别结果: {result}\")\n```\n\n## 常见问题\n\n1. **初始化速度慢**  \n   首次初始化DdddOcr对象时会加载模型，可能会比较慢，但只需要初始化一次即可。避免在循环中反复初始化。\n   ```python\n   # 错误的用法\n   for img in images:\n       ocr = ddddocr.DdddOcr()  # 每次都初始化，严重影响性能\n       result = ocr.classification(img)\n   \n   # 正确的用法\n   ocr = ddddocr.DdddOcr()  # 只初始化一次\n   for img in images:\n       result = ocr.classification(img)\n   ```\n\n2. **识别准确率不高**  \n   - 尝试使用另一个OCR模型（设置`beta=True`）\n   - 对于特殊验证码，尝试使用颜色过滤功能\n   - 限定识别字符范围（使用`set_ranges`方法）\n   - 对于透明PNG图片，使用`png_fix=True`参数\n\n3. **GPU加速**  \n   可以通过设置`use_gpu=True`和`device_id`参数来启用GPU加速：\n   ```python\n   ocr = ddddocr.DdddOcr(use_gpu=True, device_id=0)\n   ```\n   使用GPU需确保已安装对应的CUDA版本和onnxruntime-gpu库。\n\n4. **如何处理复杂验证码**  \n   对于复杂的验证码，可以尝试以下步骤：\n   - 先使用目标检测功能定位验证码位置\n   - 对检测到的区域进行裁剪\n   - 应用颜色过滤去除干扰\n   - 使用OCR识别处理后的图片\n\n5. **内存占用过高**  \n   如果在同一程序中需要使用多个功能，建议不要同时初始化多个不同功能的实例，而是根据需要初始化：\n   ```python\n   # 根据需要初始化不同的对象\n   if need_ocr:\n       processor = ddddocr.DdddOcr(ocr=True, det=False)\n   elif need_detection:\n       processor = ddddocr.DdddOcr(ocr=False, det=True)\n   ```\n\n6. **参数冲突问题**  \n   当同时设置多个模式参数时，需注意优先级：\n   - `ocr=True`和`det=True`同时设置时，优先使用目标检测模式\n   - `beta=True`和`old=True`同时设置时，使用Beta模型（`old`当前不生效）\n   - 设置`import_onnx_path`时，`ocr`和`det`参数会被忽略\n\n7. **支持的图片格式**  \n   ddddocr支持多种图片格式：\n   - JPG/JPEG\n   - PNG (带透明通道时可配合`png_fix=True`)\n   - BMP\n   - GIF (仅识别第一帧)\n   \n   对于不常见格式或Base64编码的图片，可以先转换为bytes：\n   ```python\n   # Base64编码图片处理\n   import base64\n   image_bytes = base64.b64decode(base64_str)\n   result = ocr.classification(image_bytes)\n   ```\n\n8. **多线程并发问题**  \n   在多线程环境下使用时，每个线程应当创建独立的OCR实例，否则可能导致识别结果错乱。\n\n## 项目技术支持\n\n本项目基于[dddd_trainer](https://github.com/sml2h3/dddd_trainer)训练所得，训练底层框架为PyTorch，推理底层依赖于[onnxruntime](https://pypi.org/project/onnxruntime/)。\n\n## 使用示例\n\n### 完整的验证码识别流程\n\n```python\nimport ddddocr\nimport cv2\nimport numpy as np\nfrom PIL import Image\nimport io\n\n# 初始化OCR对象\nocr = ddddocr.DdddOcr()\n\n# 读取验证码图片\nwith open(\"captcha.jpg\", \"rb\") as f:\n    image_bytes = f.read()\n\n# 转换为OpenCV格式进行预处理\n# img = cv2.imdecode(np.frombuffer(image_bytes, np.uint8), cv2.IMREAD_COLOR)\n\n# 预处理：灰度化、二值化等\n# gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)\n# _, binary = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY_INV)\n\n# 转回字节流\n# is_success, buffer = cv2.imencode(\".jpg\", binary)\n# processed_bytes = io.BytesIO(buffer).getvalue()\n\n# 识别处理后的图片\nresult = ocr.classification(image_bytes)\nprint(f\"验证码识别结果: {result}\")\n```\n\n### 滑块验证码完整示例\n\n```python\nimport ddddocr\nimport cv2\nimport numpy as np\nimport matplotlib.pyplot as plt\n\n# 初始化滑块检测对象\nslide = ddddocr.DdddOcr(det=False, ocr=False)\n\n# 读取滑块图和背景图\nwith open('target.png', 'rb') as f:\n    target_bytes = f.read()\n\nwith open('background.png', 'rb') as f:\n    background_bytes = f.read()\n\n# 匹配位置\nres = slide.slide_match(target_bytes, background_bytes)\nprint(f\"滑块位置: {res}\")\n\n# 可视化结果\nbackground = cv2.imdecode(np.frombuffer(background_bytes, np.uint8), cv2.IMREAD_COLOR)\nx1, y1, x2, y2 = res[\"target\"]\n\n# 在背景图上绘制匹配位置\ncv2.rectangle(background, (x1, y1), (x2, y2), (0, 255, 0), 2)\n\n# 显示结果\nplt.figure(figsize=(10, 6))\nplt.imshow(cv2.cvtColor(background, cv2.COLOR_BGR2RGB))\nplt.title(\"滑块匹配结果\")\nplt.axis('off')\nplt.savefig(\"slide_result.jpg\")\nplt.show()\n```\n\n## API 服务\n\nDdddOcr 提供了一键启动 API 服务的功能，可以通过 RESTful API 的方式访问 DdddOcr 的所有功能。\n\n### 命令行启动 API 服务\n\n```bash\n# 使用默认配置启动 API 服务\npython -m ddddocr api\n\n# 指定 API 服务配置\npython -m ddddocr api --host 0.0.0.0 --port 8000 --workers 4\n\n# 配置 OCR 功能\npython -m ddddocr api --ocr true --beta true\n\n# 配置目标检测功能\npython -m ddddocr api --ocr false --det true\n```\n\n> **提示**：如果直接运行 `python -m ddddocr.api`，默认会绑定在 `127.0.0.1`，可通过环境变量 `DDDDOCR_HOST` 覆盖。\n\n### API 命令行参数说明\n\n| 参数名 | 类型 | 默认值 | 说明 |\n|-------|------|-------|------|\n| `--host` | 字符串 | 0.0.0.0 | API 服务主机地址（`python -m ddddocr api` 默认） |\n| `--port` | 整数 | 8000 | API 服务端口 |\n| `--workers` | 整数 | 1 | API 服务工作进程数 |\n| `--ocr` | 布尔值 | true | 是否启用 OCR 功能 |\n| `--det` | 布尔值 | false | 是否启用目标检测功能 |\n| `--old` | 布尔值 | false | 是否使用旧版 OCR 模型 |\n| `--beta` | 布尔值 | false | 是否使用 Beta 版 OCR 模型 |\n| `--use-gpu` | 布尔值 | false | 是否使用 GPU 加速 |\n| `--device-id` | 整数 | 0 | GPU 设备 ID |\n| `--show-ad` | 布尔值 | true | 是否显示广告 |\n| `--import-onnx-path` | 字符串 | \"\" | 自定义模型路径 |\n| `--charsets-path` | 字符串 | \"\" | 自定义字符集路径 |\n\n### 使用 Docker 运行 API 服务\n\n#### 构建并运行 Docker 镜像\n\n```bash\n# 构建 Docker 镜像\ndocker build -t ddddocr-api .\n\n# 运行 Docker 容器\ndocker run -d --name ddddocr-api -p 8000:8000 ddddocr-api\n\n# 使用自定义配置运行\ndocker run -d --name ddddocr-api \\\n  -p 8000:8000 \\\n  -e DDDDOCR_OCR=true \\\n  -e DDDDOCR_BETA=true \\\n  -e DDDDOCR_WORKERS=4 \\\n  ddddocr-api\n```\n\n#### 使用 Docker Compose 运行 API 服务\n\n```bash\n# 使用默认配置启动\ndocker-compose up -d\n\n# 使用自定义配置启动\nDDDDOCR_OCR=true DDDDOCR_BETA=true DDDDOCR_WORKERS=4 docker-compose up -d\n```\n\n### API 接口说明\n\nAPI 服务提供了以下接口：\n\n#### 1. 文字识别接口 (OCR)\n\n```\nPOST /ocr\n```\n\n请求体：\n\n```json\n{\n  \"image\": \"图片的Base64编码字符串\",\n  \"probability\": false,\n  \"colors\": [],\n  \"custom_color_ranges\": null\n}\n```\n\n响应：\n\n```json\n{\n  \"result\": \"识别到的文字\",\n  \"processing_time\": 0.123\n}\n```\n\n> **注意**：当 `probability=true` 时，API 会返回 `result` 为一个字典，包含 `charsets` 与 `probability` 字段，结构与本地 `classification(probability=True)` 一致。\n\n#### 2. 目标检测接口\n\n```\nPOST /det\n```\n\n请求体：\n\n```json\n{\n  \"image\": \"图片的Base64编码字符串\"\n}\n```\n\n响应：\n\n```json\n{\n  \"result\": [\n    [x1, y1, x2, y2],\n    ...\n  ],\n  \"processing_time\": 0.123\n}\n```\n\n#### 3. 滑块匹配接口\n\n```\nPOST /slide_match\n```\n\n请求体：\n\n```json\n{\n  \"target_image\": \"目标图片的Base64编码字符串\",\n  \"background_image\": \"背景图片的Base64编码字符串\",\n  \"simple_target\": false,\n  \"flag\": false\n}\n```\n\n响应：\n\n```json\n{\n  \"result\": {\n    \"target_x\": 0,\n    \"target_y\": 0,\n    \"target\": [x1, y1, x2, y2]\n  },\n  \"processing_time\": 0.123\n}\n```\n\n#### 4. 滑块比较接口\n\n```\nPOST /slide_comparison\n```\n\n请求体：\n\n```json\n{\n  \"target_image\": \"目标图片的Base64编码字符串\",\n  \"background_image\": \"背景图片的Base64编码字符串\"\n}\n```\n\n响应：\n\n```json\n{\n  \"result\": {\n    \"target\": [x, y]\n  },\n  \"processing_time\": 0.123\n}\n```\n\n#### 5. 设置字符范围接口\n\n```\nPOST /set_charset_range\n```\n\n请求体：\n\n```json\n{\n  \"charset_range\": [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"]\n}\n```\n\n响应：\n\n```json\n{\n  \"result\": \"字符范围设置成功\",\n  \"charset_range\": [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"],\n  \"processing_time\": 0.123\n}\n```\n\n\n#### 6. 健康检查接口\n\n```\nGET /health\n```\n\n响应：\n\n```json\n{\n  \"status\": \"ok\",\n  \"timestamp\": 1628765432.1234\n}\n```\n\n#### 文件上传接口\n\n所有上述接口都支持通过表单上传文件的方式提交请求。例如：\n\n```\nPOST /ocr/file\n```\n\n可以通过表单字段上传图片文件。\n\n### API 客户端示例\n\n#### Python 示例 (Base64编码方式)\n\n```python\nimport requests\nimport base64\n\n# 读取图片文件并Base64编码\nwith open(\"captcha.png\", \"rb\") as f:\n    img_base64 = base64.b64encode(f.read()).decode()\n\n# 发送OCR请求\nurl = \"http://localhost:8000/ocr\"\nresponse = requests.post(url, json={\"image\": img_base64})\n\n# 处理响应\nresult = response.json()\nprint(f\"识别结果: {result['result']}\")\n```\n\n#### Python 示例 (文件上传方式)\n\n```python\nimport requests\n\n# 准备文件\nfiles = {\"file\": open(\"captcha.png\", \"rb\")}\n\n# 发送OCR请求\nurl = \"http://localhost:8000/ocr/file\"\nresponse = requests.post(url, files=files)\n\n# 处理响应\nresult = response.json()\nprint(f\"识别结果: {result['result']}\")\n```\n\n### Docker 环境变量配置参考\n\n| 环境变量名 | 默认值 | 说明 |\n|-----------|-------|------|\n| `DDDDOCR_HOST` | 0.0.0.0（CLI 默认）/ 127.0.0.1（直接运行 `python -m ddddocr.api` 默认） | API 服务主机地址 |\n| `DDDDOCR_PORT` | 8000 | API 服务端口 |\n| `DDDDOCR_WORKERS` | 1 | API 服务工作进程数 |\n| `DDDDOCR_OCR` | true | 是否启用 OCR 功能 |\n| `DDDDOCR_DET` | false | 是否启用目标检测功能 |\n| `DDDDOCR_OLD` | false | 是否使用旧版 OCR 模型 |\n| `DDDDOCR_BETA` | false | 是否使用 Beta 版 OCR 模型 |\n| `DDDDOCR_USE_GPU` | false | 是否使用 GPU 加速 |\n| `DDDDOCR_DEVICE_ID` | 0 | GPU 设备 ID |\n| `DDDDOCR_SHOW_AD` | true | 是否显示广告 |\n| `DDDDOCR_IMPORT_ONNX_PATH` | \"\" | 自定义模型路径 |\n| `DDDDOCR_CHARSETS_PATH` | \"\" | 自定义字符集路径 |\n\n## 许可证\n\n本项目采用MIT许可证，详情请参阅[LICENSE](https://github.com/sml2h3/ddddocr/blob/master/LICENSE)文件。 \n## 输入与输出校验说明\n\n- **图片合法性**：所有 Base64 与文件上传都会做尺寸、格式与大小校验（默认上限 8192 KB、最长边 4096px，可在实例化 `DdddOcr(max_image_bytes=..., max_image_side=...)` 时自定义），异常时返回 400。\n- **允许格式**：PNG / JPEG / JPG / WEBP / BMP / GIF / TIFF。\n- **输入类型**：本地调用支持 `bytes/bytearray`、Base64 字符串、文件路径或 `PIL.Image`。\n- **类型约束**：`DdddOcr` 的公开方法会校验布尔/整数参数，`FastAPI` 层也通过 Pydantic 验证请求体，错误会带具体字段。\n- **统一异常**：核心库新增 `DdddOcrInputError` / `InvalidImageError`，API 会把这些异常映射为 400，方便调用方处理。\n- **响应结构**：HTTP 接口现有明确的 `response_model`，文档 (`/docs`) 中可直接查看字段含义。\n- **模式提示**：在 `det=True` 模式下调用 `classification` 会抛出 “当前识别类型为目标检测”。\n\n## 示例库\n\n仓库新增 `examples/` 目录，覆盖本地调用、目标检测和 HTTP 客户端等典型场景：\n\n- `basic_ocr.py`：最小 OCR 示例，可演示概率输出与颜色过滤。\n- `detector.py`：演示如何用 `det=True` 模式返回所有检测框。\n- `api_client.py`：演示如何向 `python -m ddddocr api` 服务发送 JSON 请求。\n- `generate_basic_ocr_cases.py`：生成基础 OCR 测试用例图片。\n\n详细说明见 `examples/README.md`，可结合 README 其他章节快速起步。\n"
  },
  {
    "path": "ddddocr/README.md",
    "content": "# DdddOcr - 通用验证码识别SDK\r\n\r\n<p align=\"center\">\r\n  <img src=\"logo.png\" alt=\"DdddOcr Logo\" width=\"300\">\r\n</p>\r\n\r\n<p align=\"center\">\r\n  <strong>一个简单易用的通用验证码识别Python库</strong>\r\n</p>\r\n\r\n## 目录\r\n\r\n- [赞助合作商](#赞助合作商)\r\n- [项目介绍](#项目介绍)\r\n- [环境支持](#环境支持)\r\n- [安装方法](#安装方法)\r\n- [功能概览](#功能概览)\r\n- [初始化参数详解](#初始化参数详解)\r\n  - [参数详细说明](#参数详细说明)\r\n  - [功能组合与冲突](#功能组合与冲突)\r\n  - [模型选择指南](#模型选择指南)\r\n  - [性能优化参数](#性能优化参数)\r\n- [详细使用说明](#详细使用说明)\r\n  - [文字识别功能](#文字识别功能)\r\n    - [基础OCR识别](#基础ocr识别)\r\n    - [OCR概率输出](#ocr概率输出)\r\n    - [自定义字符范围](#自定义字符范围)\r\n    - [颜色过滤功能](#颜色过滤功能)\r\n  - [目标检测功能](#目标检测功能)\r\n  - [滑块验证码处理](#滑块验证码处理)\r\n    - [算法1：边缘匹配](#算法1边缘匹配)\r\n    - [算法2：图像差异比较](#算法2图像差异比较)\r\n  - [自定义模型导入](#自定义模型导入)\r\n- [高级用法](#高级用法)\r\n  - [批量处理](#批量处理)\r\n  - [多线程优化](#多线程优化)\r\n  - [验证码预处理](#验证码预处理)\r\n- [常见问题](#常见问题)\r\n  - [初始化速度慢](#初始化速度慢)\r\n  - [识别准确率不高](#识别准确率不高)\r\n  - [GPU加速](#gpu加速)\r\n  - [处理复杂验证码](#如何处理复杂验证码)\r\n  - [内存占用过高](#内存占用过高)\r\n  - [参数冲突问题](#参数冲突问题)\r\n  - [支持的图片格式](#支持的图片格式)\r\n  - [多线程并发问题](#多线程并发问题)\r\n- [项目技术支持](#项目技术支持)\r\n- [使用示例](#使用示例)\r\n- [许可证](#许可证)\r\n\r\n## 赞助合作商\r\n\r\n|                                                            | 赞助合作商 | 推荐理由                                                                                             |\r\n|------------------------------------------------------------|------------|--------------------------------------------------------------------------------------------------|\r\n| ![YesCaptcha](https://cdn.wenanzhe.com/img/yescaptcha.png) | [YesCaptcha](https://yescaptcha.com/i/NSwk7i) | 谷歌reCaptcha验证码 / hCaptcha验证码 / funCaptcha验证码商业级识别接口 [点我](https://yescaptcha.com/i/NSwk7i) 直达VIP4 |\r\n| ![超级鹰](https://cdn.wenanzhe.com/img/logo.gif) | [超级鹰](https://www.chaojiying.com/) | 全球领先的智能图片分类及识别商家，安全、准确、高效、稳定、开放，强大的技术及校验团队，支持大并发。7*24h作业进度管理 |\r\n| ![Malenia](https://cdn.wenanzhe.com/img/malenia.png!/scale/50)    | [Malenia](https://malenia.iinti.cn/malenia-doc/) | Malenia企业级代理IP网关平台/代理IP分销软件 |\r\n| 雨云VPS    | [注册首月5折](https://www.rainyun.com/ddddocr_) | 浙江节点低价大带宽，100M每月30元 |\r\n\r\n## 项目介绍\r\n\r\nDdddOcr 是一个通用验证码离线本地识别SDK，由 [sml2h3](https://github.com/sml2h3) 与 [kerlomz](https://github.com/kerlomz) 共同开发完成。该项目通过大批量生成随机数据进行深度网络训练，可以识别各种类型的验证码，包括：\r\n\r\n- 常见的数字字母组合验证码\r\n- 中文验证码\r\n- 滑块验证码\r\n- 各种特殊字符验证码\r\n\r\n项目设计理念是\"最简依赖\"，尽量减少用户的配置和使用成本，提供简单易用的API接口。\r\n\r\n## 环境支持\r\n\r\n| 系统 | CPU | GPU | 最大支持Python版本 | 备注 |\r\n|-----|-----|-----|--------------|-----|\r\n| Windows 64位 | ✓ | ✓ | 3.12 | 部分版本Windows需要安装[vc运行库](https://www.ghxi.com/yxkhj.html) |\r\n| Linux 64 / ARM64 | ✓ | ✓ | 3.12 | |\r\n| macOS X64 | ✓ | ✓ | 3.12 | M1/M2/M3芯片用户请参考[相关说明](https://github.com/sml2h3/ddddocr/issues/67) |\r\n\r\n不支持的环境：\r\n- Windows 32位\r\n- Linux 32位\r\n\r\n## 安装方法\r\n\r\n### 从PyPI安装（推荐）\r\n\r\n```bash\r\npip install ddddocr\r\n```\r\n\r\n### 从源码安装\r\n\r\n```bash\r\ngit clone https://github.com/sml2h3/ddddocr.git\r\ncd ddddocr\r\npip install .\r\n```\r\n\r\n### 安装 API 依赖（可选）\r\n\r\n```bash\r\npip install \".[api]\"\r\n```\r\n\r\n> **注意**：请勿直接在ddddocr项目的根目录内直接import ddddocr，请确保你的开发项目目录名称不为ddddocr。\r\n\r\n## 功能概览\r\n\r\nDdddOcr提供以下核心功能：\r\n\r\n| 功能 | 描述 | 初始化参数 |\r\n|-----|-----|----------|\r\n| 文字识别 | 识别图片中的文字内容 | `ocr=True`（默认） |\r\n| 目标检测 | 检测图片中的目标位置 | `det=True` |\r\n| 滑块验证码识别 | 识别滑块验证码的缺口位置 | `ocr=False` |\r\n| 自定义模型导入 | 导入自定义训练的模型 | `import_onnx_path=\"模型路径\"` |\r\n\r\n## 初始化参数详解\r\n\r\n`DdddOcr` 类初始化时支持多种参数配置，以适应不同的使用场景：\r\n\r\n```python\r\nddddocr.DdddOcr(\r\n    ocr=True,           # 是否启用OCR功能\r\n    det=False,          # 是否启用目标检测功能\r\n    old=False,          # 是否使用旧版OCR模型\r\n    beta=False,         # 是否使用Beta版OCR模型（新模型）\r\n    use_gpu=False,      # 是否使用GPU加速\r\n    device_id=0,        # 使用的GPU设备ID\r\n    show_ad=True,       # 是否显示广告信息\r\n    import_onnx_path=\"\", # 自定义模型路径\r\n    charsets_path=\"\",    # 自定义字符集路径\r\n    max_image_bytes=None, # 单图最大字节数（默认 8MB）\r\n    max_image_side=None   # 单图最长边限制（默认 4096px）\r\n)\r\n```\r\n\r\n### 参数详细说明\r\n\r\n| 参数 | 类型 | 默认值 | 说明 |\r\n|-----|-----|-----|-----|\r\n| `ocr` | bool | True | 是否启用OCR功能，用于识别图片中的文字。**互斥性**：当`det=True`时会强制关闭OCR |\r\n| `det` | bool | False | 是否启用目标检测功能，用于检测图片中的目标位置。**互斥性**：`det=True`会覆盖`ocr=True` |\r\n| `old` | bool | False | 兼容参数，当前不会改变模型选择（默认即使用旧版模型） |\r\n| `beta` | bool | False | 是否使用Beta版OCR模型（新模型），对某些验证码识别效果更好。**互斥性**：与`old=True`参数互斥（但`old`当前不生效） |\r\n| `use_gpu` | bool | False | 是否使用GPU加速。**依赖关系**：需要安装CUDA和相应的onnxruntime-gpu版本，否则会初始化失败 |\r\n| `device_id` | int | 0 | 使用的GPU设备ID。**依赖关系**：仅在`use_gpu=True`时生效，指定使用哪个GPU设备 |\r\n| `show_ad` | bool | True | 是否在初始化时显示广告信息 |\r\n| `import_onnx_path` | str | \"\" | 自定义模型的onnx文件路径。**依赖关系**：设置此参数时，`charsets_path`参数必须同时提供；此时`ocr/det`设置会被忽略 |\r\n| `charsets_path` | str | \"\" | 自定义字符集的json文件路径。**依赖关系**：必须与`import_onnx_path`一起使用，否则无效 |\r\n| `max_image_bytes` | int/str | 8MB | 单图最大字节数上限（入参可为 int 或数字字符串） |\r\n| `max_image_side` | int/str | 4096 | 单图最长边像素上限（入参可为 int 或数字字符串） |\r\n\r\n### 功能组合与冲突\r\n\r\n根据参数组合，ddddocr具有不同的工作模式：\r\n\r\n1. **标准OCR模式**：\r\n   - 参数设置：`ocr=True, det=False`（默认）\r\n   - 功能：识别图片中的文字\r\n\r\n2. **目标检测模式**：\r\n   - 参数设置：`ocr=False, det=True`\r\n   - 功能：检测图片中的目标位置\r\n   - 注意：同时设置`ocr=True, det=True`时，会进入目标检测模式（`det`优先）\r\n\r\n3. **滑块识别模式**：\r\n   - 参数设置：`ocr=False, det=False`\r\n   - 功能：使用滑块匹配算法（需调用`slide_match`或`slide_comparison`方法）\r\n\r\n4. **自定义模型模式**：\r\n   - 参数设置：`import_onnx_path=\"模型路径\", charsets_path=\"字符集路径\"`\r\n   - 功能：使用自定义训练的模型进行识别\r\n   - 注意：设置此模式时，`ocr`和`det`参数会被忽略，且自定义字符集文件需包含 `charset/word/image/channel` 字段\r\n\r\n5. **OCR模型选择**：\r\n   - 默认模型：不设置特殊参数（当前使用 `common_old.onnx`）\r\n   - Beta模型：`beta=True`（使用 `common.onnx`）\r\n   - 旧版模型参数：`old=True`（当前不改变模型，仅为兼容保留）\r\n   - 注意：`beta`和`old`参数互斥，但`old`当前不生效\r\n\r\n### 模型选择指南\r\n\r\n- **默认模型**：当前默认使用 `common_old.onnx`，适用于多数简单验证码场景\r\n- **Beta模型**：`beta=True` 使用 `common.onnx`，对部分复杂验证码效果更好\r\n- **自定义模型**：当默认模型无法满足需求时，可以通过[dddd_trainer](https://github.com/sml2h3/dddd_trainer)训练自己的模型\r\n\r\n### 性能优化参数\r\n\r\n- **GPU加速**：对于处理大量图片时，开启GPU加速可显著提升性能\r\n  ```python\r\n  ocr = ddddocr.DdddOcr(use_gpu=True, device_id=0)\r\n  ```\r\n  \r\n- **GPU设备选择**：在多GPU环境中，可通过`device_id`指定使用的GPU\r\n  ```python\r\n  # 使用第二张GPU卡\r\n  ocr = ddddocr.DdddOcr(use_gpu=True, device_id=1)\r\n  ```\r\n\r\n- **关闭广告显示**：在生产环境中可关闭广告提示\r\n  ```python\r\n  ocr = ddddocr.DdddOcr(show_ad=False)\r\n  ```\r\n\r\n## 详细使用说明\r\n\r\n### 文字识别功能\r\n\r\n#### 基础OCR识别\r\n\r\n主要用于识别单行文字，如常见的英数验证码等。支持中文、英文、数字以及部分特殊字符的识别。\r\n\r\n```python\r\nimport ddddocr\r\n\r\n# 初始化OCR对象\r\nocr = ddddocr.DdddOcr()\r\n\r\n# 读取图片\r\nwith open(\"验证码图片.jpg\", \"rb\") as f:\r\n    image = f.read()\r\n\r\n# 识别图片\r\nresult = ocr.classification(image)\r\nprint(result)  # 输出识别结果\r\n```\r\n\r\n**OCR识别示例图片**\r\n\r\n**参考例图**\r\n\r\n包括且不限于以下图片\r\n\r\n<img src=\"https://cdn.wenanzhe.com/img/20210715211733855.png\" alt=\"captcha\" width=\"150\">\r\n<img src=\"https://cdn.wenanzhe.com/img/78b7f57d-371d-4b65-afb2-d19608ae1892.png\" alt=\"captcha\" width=\"150\">\r\n<img src=\"https://cdn.wenanzhe.com/img/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20211226142305.png\" alt=\"captcha\" width=\"150\">\r\n<img src=\"https://cdn.wenanzhe.com/img/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20211226142325.png\" alt=\"captcha\" width=\"150\">\r\n<img src=\"https://cdn.wenanzhe.com/img/2AMLyA_fd83e1f1800e829033417ae6dd0e0ae0.png\" alt=\"captcha\" width=\"150\">\r\n<img src=\"https://cdn.wenanzhe.com/img/aabd_181ae81dd5526b8b89f987d1179266ce.jpg\" alt=\"captcha\" width=\"150\">\r\n<br />\r\n<img src=\"https://cdn.wenanzhe.com/img/2bghz_b504e9f9de1ed7070102d21c6481e0cf.png\" alt=\"captcha\" width=\"150\">\r\n<img src=\"https://cdn.wenanzhe.com/img/0000_z4ecc2p65rxc610x.jpg\" alt=\"captcha\" width=\"150\">\r\n<img src=\"https://cdn.wenanzhe.com/img/2acd_0586b6b36858a4e8a9939db8a7ec07b7.jpg\" alt=\"captcha\" width=\"150\">\r\n<img src=\"https://cdn.wenanzhe.com/img/2a8r_79074e311d573d31e1630978fe04b990.jpg\" alt=\"captcha\" width=\"150\">\r\n<img src=\"https://cdn.wenanzhe.com/img/aftf_C2vHZlk8540y3qAmCM.bmp\" alt=\"captcha\" width=\"150\">\r\n<img src=\"https://cdn.wenanzhe.com/img/%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_20211226144057.png\" alt=\"captcha\" width=\"150\">\r\n\r\n**OCR模型选择**\r\n\r\nDdddOcr内置两套OCR模型，可以通过`beta`参数切换：\r\n\r\n```python\r\n# 使用第二套OCR模型\r\nocr = ddddocr.DdddOcr(beta=True)\r\n```\r\n\r\n**透明PNG图片处理**\r\n\r\n对于透明黑色PNG图片，可以使用`png_fix`参数（对所有 OCR 模式生效）：\r\n\r\n```python\r\nresult = ocr.classification(image, png_fix=True)\r\n```\r\n\r\n> **注意**：`png_fix` 仅对带透明通道的图片生效；初始化DdddOcr对象只需要一次，不要在每次识别时都重新初始化，这会导致速度变慢。\r\n\r\n#### OCR概率输出\r\n\r\n可以获取OCR识别结果的概率分布，便于进行更灵活的结果处理：\r\n\r\n```python\r\nimport ddddocr\r\n\r\nocr = ddddocr.DdddOcr()\r\nimage = open(\"test.jpg\", \"rb\").read()\r\n\r\n# 获取识别结果的概率分布\r\nresult = ocr.classification(image, probability=True)\r\n\r\n# 处理概率结果\r\ns = \"\"\r\nfor i in result['probability']:\r\n    s += result['charsets'][i.index(max(i))]\r\n\r\nprint(s)\r\n```\r\n\r\n**概率输出示例**（仅对内置模型生效，自定义模型会忽略`probability=True`并直接返回字符串）：\r\n\r\n```python\r\n# 概率输出结果示例\r\n{\r\n    'charsets': ['', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', ...],\r\n    'probability': [\r\n        [0.01, 0.02, 0.01, 0.03, 0.02, 0.01, 0.02, 0.75, 0.03, 0.05, 0.01, ...],  # 第一个字符的概率分布\r\n        [0.01, 0.01, 0.02, 0.01, 0.03, 0.02, 0.01, 0.02, 0.01, 0.80, 0.01, ...],  # 第二个字符的概率分布\r\n        ...\r\n    ]\r\n}\r\n```\r\n\r\n#### 自定义字符范围\r\n\r\n可以通过`set_ranges`方法限定OCR识别的字符范围：\r\n\r\n```python\r\nimport ddddocr\r\n\r\nocr = ddddocr.DdddOcr()\r\nimage = open(\"test.jpg\", \"rb\").read()\r\n\r\n# 设置识别范围为数字\r\nocr.set_ranges(0)  # 等同于 ocr.set_ranges(\"0123456789\")\r\n\r\n# 或自定义字符范围\r\nocr.set_ranges(\"0123456789+-x/=\")\r\n\r\nresult = ocr.classification(image)\r\nprint(result)\r\n```\r\n\r\n**内置字符范围参数**：\r\n\r\n| 参数值 | 含义 |\r\n|-----|-----|\r\n| 0 | 纯数字 0-9 |\r\n| 1 | 纯小写英文 a-z |\r\n| 2 | 纯大写英文 A-Z |\r\n| 3 | 小写英文 + 大写英文 |\r\n| 4 | 小写英文 + 数字 |\r\n| 5 | 大写英文 + 数字 |\r\n| 6 | 小写英文 + 大写英文 + 数字 |\r\n| 7 | 默认字符库 - 小写英文 - 大写英文 - 数字 |\r\n\r\n#### 颜色过滤功能\r\n\r\n对于一些特殊的验证码，可以通过颜色过滤来提高识别准确率：\r\n\r\n```python\r\nimport ddddocr\r\n\r\nocr = ddddocr.DdddOcr()\r\nimage = open(\"test.jpg\", \"rb\").read()\r\n\r\n# 只保留红色和蓝色部分\r\nresult = ocr.classification(image, colors=[\"red\", \"blue\"])\r\nprint(result)\r\n```\r\n\r\n**支持的颜色**：\r\n- red (红色)\r\n- green (绿色)\r\n- blue (蓝色)\r\n- yellow (黄色)\r\n- orange (橙色)\r\n- purple (紫色)\r\n- pink (粉色)\r\n- brown (棕色)\r\n\r\n也可以自定义颜色范围：\r\n\r\n```python\r\n# 自定义颜色范围\r\ncustom_ranges = {\r\n    'light_blue': [(90, 30, 30), (110, 255, 255)]  # HSV颜色空间\r\n}\r\n\r\nresult = ocr.classification(image, colors=[\"light_blue\"], custom_color_ranges=custom_ranges)\r\n```\r\n\r\n> **提示**：`custom_color_ranges` 只有在 `colors` 列表包含对应键名时才会生效。\r\n\r\n### 目标检测功能\r\n\r\n用于检测图像中可能的目标主体位置，返回目标的边界框坐标：\r\n\r\n```python\r\nimport ddddocr\r\nimport cv2\r\n\r\n# 初始化检测对象\r\ndet = ddddocr.DdddOcr(det=True, ocr=False)\r\n\r\n# 读取图片\r\nwith open(\"test.jpg\", 'rb') as f:\r\n    image = f.read()\r\n\r\n# 检测目标\r\nbboxes = det.detection(image)\r\nprint(bboxes)  # 输出格式：[[x1, y1, x2, y2], ...]\r\n\r\n# 可视化检测结果\r\nim = cv2.imread(\"test.jpg\")\r\nfor bbox in bboxes:\r\n    x1, y1, x2, y2 = bbox\r\n    im = cv2.rectangle(im, (x1, y1), (x2, y2), color=(0, 0, 255), thickness=2)\r\ncv2.imwrite(\"result.jpg\", im)\r\n```\r\n\r\n**目标检测示例**：\r\n\r\n**参考例图**\r\n\r\n包括且不限于以下图片\r\n\r\n<img src=\"https://cdn.wenanzhe.com/img/page1_1.jpg\" alt=\"captcha\" width=\"200\">\r\n<img src=\"https://cdn.wenanzhe.com/img/page1_2.jpg\" alt=\"captcha\" width=\"200\">\r\n<img src=\"https://cdn.wenanzhe.com/img/page1_3.jpg\" alt=\"captcha\" width=\"200\">\r\n<img src=\"https://cdn.wenanzhe.com/img/page1_4.jpg\" alt=\"captcha\" width=\"200\">\r\n<br />\r\n<img src=\"https://cdn.wenanzhe.com/img/result.jpg\" alt=\"captcha\" width=\"200\">\r\n<img src=\"https://cdn.wenanzhe.com/img/result2.jpg\" alt=\"captcha\" width=\"200\">\r\n<img src=\"https://cdn.wenanzhe.com/img/result4.jpg\" alt=\"captcha\" width=\"200\">\r\n### 滑块验证码处理\r\n\r\nDdddOcr提供两种滑块验证码处理算法：\r\n\r\n#### 算法1：边缘匹配\r\n\r\n适用于有透明背景的滑块图片，通过边缘检测找到滑块在背景图中的位置：\r\n\r\n```python\r\nimport ddddocr\r\n\r\n# 初始化滑块检测对象\r\nslide = ddddocr.DdddOcr(det=False, ocr=False)\r\n\r\n# 读取滑块图和背景图\r\nwith open('target.png', 'rb') as f:\r\n    target_bytes = f.read()\r\n\r\nwith open('background.png', 'rb') as f:\r\n    background_bytes = f.read()\r\n\r\n# 匹配位置\r\nres = slide.slide_match(target_bytes, background_bytes)\r\nprint(f\"滑块位置: {res}\")\r\n\r\n# 可视化结果\r\nbackground = cv2.imdecode(np.frombuffer(background_bytes, np.uint8), cv2.IMREAD_COLOR)\r\nx1, y1, x2, y2 = res[\"target\"]\r\n\r\n# 在背景图上绘制匹配位置\r\ncv2.rectangle(background, (x1, y1), (x2, y2), (0, 255, 0), 2)\r\n\r\n# 显示结果\r\nplt.figure(figsize=(10, 6))\r\nplt.imshow(cv2.cvtColor(background, cv2.COLOR_BGR2RGB))\r\nplt.title(\"滑块匹配结果\")\r\nplt.axis('off')\r\nplt.savefig(\"slide_result.jpg\")\r\nplt.show()\r\n```\r\n\r\n**滑块匹配示例**：\r\n\r\n<table>\r\n  <tr>\r\n    <td align=\"center\">\r\n      <img src=\"https://cdn.wenanzhe.com/img/b.png\" width=\"50\"/><br/>\r\n      <strong>滑块图</strong>\r\n    </td>\r\n    <td align=\"center\">\r\n      <img src=\"https://cdn.wenanzhe.com/img/a.png\" width=\"300\"/><br/>\r\n      <strong>背景图</strong>\r\n    </td>\r\n  </tr>\r\n</table>\r\n\r\n对于没有透明背景的滑块图，可以使用`simple_target`参数：\r\n\r\n```python\r\nres = slide.slide_match(target_bytes, background_bytes, simple_target=True)\r\n```\r\n\r\n#### 算法2：图像差异比较\r\n\r\n适用于比较两张图片的不同之处，找出滑块缺口位置：\r\n\r\n```python\r\nimport ddddocr\r\n\r\nslide = ddddocr.DdddOcr(det=False, ocr=False)\r\n\r\n# 读取带有缺口阴影的图片和完整图片\r\nwith open('bg.jpg', 'rb') as f:\r\n    target_bytes = f.read()\r\n\r\nwith open('fullpage.jpg', 'rb') as f:\r\n    background_bytes = f.read()\r\n\r\n# 比较差异\r\nres = slide.slide_comparison(target_bytes, background_bytes)\r\nprint(res)  # 输出格式：{\"target\": [x, y]}\r\n```\r\n\r\n**图像差异比较示例**：\r\n\r\n<table>\r\n  <tr>\r\n    <td align=\"center\">\r\n      <img src=\"https://cdn.wenanzhe.com/img/bg.jpg\" width=\"300\"/><br/>\r\n      <strong>带缺口阴影的图片</strong>\r\n    </td>\r\n    <td align=\"center\">\r\n      <img src=\"https://cdn.wenanzhe.com/img/fullpage.jpg\" width=\"300\"/><br/>\r\n      <strong>完整图片</strong>\r\n    </td>\r\n  </tr>\r\n</table>\r\n\r\n### 自定义模型导入\r\n\r\nDdddOcr支持导入通过[dddd_trainer](https://github.com/sml2h3/dddd_trainer)训练的自定义模型：\r\n\r\n```python\r\nimport ddddocr\r\n\r\n# 导入自定义模型\r\nocr = ddddocr.DdddOcr(\r\n    det=False, \r\n    ocr=False, \r\n    import_onnx_path=\"mymodel.onnx\", \r\n    charsets_path=\"charsets.json\"\r\n)\r\n\r\nwith open('test.jpg', 'rb') as f:\r\n    image_bytes = f.read()\r\n\r\nres = ocr.classification(image_bytes)\r\nprint(res)\r\n```\r\n\r\n## 高级用法\r\n\r\n### 批量处理\r\n\r\n对大量验证码进行批量处理时，保持OCR实例的复用可以显著提高效率：\r\n\r\n```python\r\nimport ddddocr\r\nimport os\r\nimport time\r\n\r\n# 初始化OCR对象（只需一次）\r\nocr = ddddocr.DdddOcr()\r\n\r\n# 批量处理目录中的所有图片\r\ndef batch_process(directory):\r\n    results = {}\r\n    \r\n    start_time = time.time()\r\n    for filename in os.listdir(directory):\r\n        if filename.endswith(('.png', '.jpg', '.jpeg', '.bmp')):\r\n            file_path = os.path.join(directory, filename)\r\n            \r\n            with open(file_path, 'rb') as f:\r\n                image = f.read()\r\n                \r\n            # 使用同一个OCR实例处理所有图片\r\n            result = ocr.classification(image)\r\n            results[filename] = result\r\n    \r\n    end_time = time.time()\r\n    print(f\"处理 {len(results)} 张图片耗时: {end_time - start_time:.2f} 秒\")\r\n    return results\r\n\r\n# 使用示例\r\nresults = batch_process(\"./captchas/\")\r\nfor filename, text in results.items():\r\n    print(f\"{filename}: {text}\")\r\n```\r\n\r\n### 多线程优化\r\n\r\n在多线程环境下使用时，应当为每个线程创建独立的OCR实例：\r\n\r\n```python\r\nimport ddddocr\r\nimport concurrent.futures\r\nimport os\r\n\r\ndef process_image(file_path):\r\n    # 每个线程创建自己的OCR实例\r\n    ocr = ddddocr.DdddOcr()\r\n    \r\n    with open(file_path, 'rb') as f:\r\n        image = f.read()\r\n    \r\n    result = ocr.classification(image)\r\n    return os.path.basename(file_path), result\r\n\r\ndef parallel_process(directory, max_workers=4):\r\n    file_paths = [os.path.join(directory, f) for f in os.listdir(directory) \r\n                 if f.endswith(('.png', '.jpg', '.jpeg', '.bmp'))]\r\n    \r\n    results = {}\r\n    with concurrent.futures.ThreadPoolExecutor(max_workers=max_workers) as executor:\r\n        future_to_file = {executor.submit(process_image, file_path): file_path for file_path in file_paths}\r\n        \r\n        for future in concurrent.futures.as_completed(future_to_file):\r\n            filename, result = future.result()\r\n            results[filename] = result\r\n    \r\n    return results\r\n\r\n# 使用示例\r\nresults = parallel_process(\"./captchas/\", max_workers=8)\r\n```\r\n\r\n### 验证码预处理\r\n\r\n对于干扰较多的验证码，可以先进行预处理再识别：\r\n\r\n```python\r\nimport ddddocr\r\nimport cv2\r\nimport numpy as np\r\nfrom PIL import Image\r\nimport io\r\n\r\ndef preprocess_captcha(image_bytes):\r\n    # 转换为OpenCV格式\r\n    nparr = np.frombuffer(image_bytes, np.uint8)\r\n    img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)\r\n    \r\n    # 灰度化\r\n    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)\r\n    \r\n    # 二值化\r\n    _, binary = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY_INV)\r\n    \r\n    # 去除小噪点\r\n    kernel = np.ones((2, 2), np.uint8)\r\n    opening = cv2.morphologyEx(binary, cv2.MORPH_OPEN, kernel)\r\n    \r\n    # 转回字节流\r\n    is_success, buffer = cv2.imencode(\".jpg\", opening)\r\n    processed_bytes = io.BytesIO(buffer).getvalue()\r\n    \r\n    return processed_bytes\r\n\r\n# 使用示例\r\nocr = ddddocr.DdddOcr()\r\n\r\nwith open(\"noisy_captcha.jpg\", \"rb\") as f:\r\n    image_bytes = f.read()\r\n\r\n# 预处理验证码\r\nprocessed_bytes = preprocess_captcha(image_bytes)\r\n\r\n# 识别处理后的图片\r\nresult = ocr.classification(processed_bytes)\r\nprint(f\"验证码识别结果: {result}\")\r\n```\r\n\r\n## 常见问题\r\n\r\n1. **初始化速度慢**  \r\n   首次初始化DdddOcr对象时会加载模型，可能会比较慢，但只需要初始化一次即可。避免在循环中反复初始化。\r\n   ```python\r\n   # 错误的用法\r\n   for img in images:\r\n       ocr = ddddocr.DdddOcr()  # 每次都初始化，严重影响性能\r\n       result = ocr.classification(img)\r\n   \r\n   # 正确的用法\r\n   ocr = ddddocr.DdddOcr()  # 只初始化一次\r\n   for img in images:\r\n       result = ocr.classification(img)\r\n   ```\r\n\r\n2. **识别准确率不高**  \r\n   - 尝试使用另一个OCR模型（设置`beta=True`）\r\n   - 对于特殊验证码，尝试使用颜色过滤功能\r\n   - 限定识别字符范围（使用`set_ranges`方法）\r\n   - 对于透明PNG图片，使用`png_fix=True`参数\r\n\r\n3. **GPU加速**  \r\n   可以通过设置`use_gpu=True`和`device_id`参数来启用GPU加速：\r\n   ```python\r\n   ocr = ddddocr.DdddOcr(use_gpu=True, device_id=0)\r\n   ```\r\n   使用GPU需确保已安装对应的CUDA版本和onnxruntime-gpu库。\r\n\r\n4. **如何处理复杂验证码**  \r\n   对于复杂的验证码，可以尝试以下步骤：\r\n   - 先使用目标检测功能定位验证码位置\r\n   - 对检测到的区域进行裁剪\r\n   - 应用颜色过滤去除干扰\r\n   - 使用OCR识别处理后的图片\r\n\r\n5. **内存占用过高**  \r\n   如果在同一程序中需要使用多个功能，建议不要同时初始化多个不同功能的实例，而是根据需要初始化：\r\n   ```python\r\n   # 根据需要初始化不同的对象\r\n   if need_ocr:\r\n       processor = ddddocr.DdddOcr(ocr=True, det=False)\r\n   elif need_detection:\r\n       processor = ddddocr.DdddOcr(ocr=False, det=True)\r\n   ```\r\n\r\n6. **参数冲突问题**  \r\n   当同时设置多个模式参数时，需注意优先级：\r\n   - `ocr=True`和`det=True`同时设置时，优先使用目标检测模式\r\n   - `beta=True`和`old=True`同时设置时，使用Beta模型（`old`当前不生效）\r\n   - 设置`import_onnx_path`时，`ocr`和`det`参数会被忽略\r\n\r\n7. **支持的图片格式**  \r\n   ddddocr支持多种图片格式：\r\n   - JPG/JPEG\r\n   - PNG (带透明通道时可配合`png_fix=True`)\r\n   - BMP\r\n   - GIF (仅识别第一帧)\r\n   \r\n   对于不常见格式或Base64编码的图片，可以先转换为bytes：\r\n   ```python\r\n   # Base64编码图片处理\r\n   import base64\r\n   image_bytes = base64.b64decode(base64_str)\r\n   result = ocr.classification(image_bytes)\r\n   ```\r\n\r\n8. **多线程并发问题**  \r\n   在多线程环境下使用时，每个线程应当创建独立的OCR实例，否则可能导致识别结果错乱。\r\n\r\n## 项目技术支持\r\n\r\n本项目基于[dddd_trainer](https://github.com/sml2h3/dddd_trainer)训练所得，训练底层框架为PyTorch，推理底层依赖于[onnxruntime](https://pypi.org/project/onnxruntime/)。\r\n\r\n## 使用示例\r\n\r\n### 完整的验证码识别流程\r\n\r\n```python\r\nimport ddddocr\r\nimport cv2\r\nimport numpy as np\r\nfrom PIL import Image\r\nimport io\r\n\r\n# 初始化OCR对象\r\nocr = ddddocr.DdddOcr()\r\n\r\n# 读取验证码图片\r\nwith open(\"captcha.jpg\", \"rb\") as f:\r\n    image_bytes = f.read()\r\n\r\n# 转换为OpenCV格式进行预处理\r\n# img = cv2.imdecode(np.frombuffer(image_bytes, np.uint8), cv2.IMREAD_COLOR)\r\n\r\n# 预处理：灰度化、二值化等\r\n# gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)\r\n# _, binary = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY_INV)\r\n\r\n# 转回字节流\r\n# is_success, buffer = cv2.imencode(\".jpg\", binary)\r\n# processed_bytes = io.BytesIO(buffer).getvalue()\r\n\r\n# 识别处理后的图片\r\nresult = ocr.classification(image_bytes)\r\nprint(f\"验证码识别结果: {result}\")\r\n```\r\n\r\n### 滑块验证码完整示例\r\n\r\n```python\r\nimport ddddocr\r\nimport cv2\r\nimport numpy as np\r\nimport matplotlib.pyplot as plt\r\n\r\n# 初始化滑块检测对象\r\nslide = ddddocr.DdddOcr(det=False, ocr=False)\r\n\r\n# 读取滑块图和背景图\r\nwith open('target.png', 'rb') as f:\r\n    target_bytes = f.read()\r\n\r\nwith open('background.png', 'rb') as f:\r\n    background_bytes = f.read()\r\n\r\n# 匹配位置\r\nres = slide.slide_match(target_bytes, background_bytes)\r\nprint(f\"滑块位置: {res}\")\r\n\r\n# 可视化结果\r\nbackground = cv2.imdecode(np.frombuffer(background_bytes, np.uint8), cv2.IMREAD_COLOR)\r\nx1, y1, x2, y2 = res[\"target\"]\r\n\r\n# 在背景图上绘制匹配位置\r\ncv2.rectangle(background, (x1, y1), (x2, y2), (0, 255, 0), 2)\r\n\r\n# 显示结果\r\nplt.figure(figsize=(10, 6))\r\nplt.imshow(cv2.cvtColor(background, cv2.COLOR_BGR2RGB))\r\nplt.title(\"滑块匹配结果\")\r\nplt.axis('off')\r\nplt.savefig(\"slide_result.jpg\")\r\nplt.show()\r\n```\r\n\r\n## API 服务\r\n\r\nDdddOcr 提供了一键启动 API 服务的功能，可以通过 RESTful API 的方式访问 DdddOcr 的所有功能。\r\n\r\n### 命令行启动 API 服务\r\n\r\n```bash\r\n# 使用默认配置启动 API 服务\r\npython -m ddddocr api\r\n\r\n# 指定 API 服务配置\r\npython -m ddddocr api --host 0.0.0.0 --port 8000 --workers 4\r\n\r\n# 配置 OCR 功能\r\npython -m ddddocr api --ocr true --beta true\r\n\r\n# 配置目标检测功能\r\npython -m ddddocr api --ocr false --det true\r\n```\r\n\r\n> **提示**：如果直接运行 `python -m ddddocr.api`，默认会绑定在 `127.0.0.1`，可通过环境变量 `DDDDOCR_HOST` 覆盖。\r\n\r\n### API 命令行参数说明\r\n\r\n| 参数名 | 类型 | 默认值 | 说明 |\r\n|-------|------|-------|------|\r\n| `--host` | 字符串 | 0.0.0.0 | API 服务主机地址（`python -m ddddocr api` 默认） |\r\n| `--port` | 整数 | 8000 | API 服务端口 |\r\n| `--workers` | 整数 | 1 | API 服务工作进程数 |\r\n| `--ocr` | 布尔值 | true | 是否启用 OCR 功能 |\r\n| `--det` | 布尔值 | false | 是否启用目标检测功能 |\r\n| `--old` | 布尔值 | false | 是否使用旧版 OCR 模型 |\r\n| `--beta` | 布尔值 | false | 是否使用 Beta 版 OCR 模型 |\r\n| `--use-gpu` | 布尔值 | false | 是否使用 GPU 加速 |\r\n| `--device-id` | 整数 | 0 | GPU 设备 ID |\r\n| `--show-ad` | 布尔值 | true | 是否显示广告 |\r\n| `--import-onnx-path` | 字符串 | \"\" | 自定义模型路径 |\r\n| `--charsets-path` | 字符串 | \"\" | 自定义字符集路径 |\r\n\r\n### 使用 Docker 运行 API 服务\r\n\r\n#### 构建并运行 Docker 镜像\r\n\r\n```bash\r\n# 构建 Docker 镜像\r\ndocker build -t ddddocr-api .\r\n\r\n# 运行 Docker 容器\r\ndocker run -d --name ddddocr-api -p 8000:8000 ddddocr-api\r\n\r\n# 使用自定义配置运行\r\ndocker run -d --name ddddocr-api \\\r\n  -p 8000:8000 \\\r\n  -e DDDDOCR_OCR=true \\\r\n  -e DDDDOCR_BETA=true \\\r\n  -e DDDDOCR_WORKERS=4 \\\r\n  ddddocr-api\r\n```\r\n\r\n#### 使用 Docker Compose 运行 API 服务\r\n\r\n```bash\r\n# 使用默认配置启动\r\ndocker-compose up -d\r\n\r\n# 使用自定义配置启动\r\nDDDDOCR_OCR=true DDDDOCR_BETA=true DDDDOCR_WORKERS=4 docker-compose up -d\r\n```\r\n\r\n### API 接口说明\r\n\r\nAPI 服务提供了以下接口：\r\n\r\n#### 1. 文字识别接口 (OCR)\r\n\r\n```\r\nPOST /ocr\r\n```\r\n\r\n请求体：\r\n\r\n```json\r\n{\r\n  \"image\": \"图片的Base64编码字符串\",\r\n  \"probability\": false,\r\n  \"colors\": [],\r\n  \"custom_color_ranges\": null\r\n}\r\n```\r\n\r\n响应：\r\n\r\n```json\r\n{\r\n  \"result\": \"识别到的文字\",\r\n  \"processing_time\": 0.123\r\n}\r\n```\r\n\r\n> **注意**：当 `probability=true` 时，API 会返回 `result` 为一个字典，包含 `charsets` 与 `probability` 字段，结构与本地 `classification(probability=True)` 一致。\r\n\r\n#### 2. 目标检测接口\r\n\r\n```\r\nPOST /det\r\n```\r\n\r\n请求体：\r\n\r\n```json\r\n{\r\n  \"image\": \"图片的Base64编码字符串\"\r\n}\r\n```\r\n\r\n响应：\r\n\r\n```json\r\n{\r\n  \"result\": [\r\n    [x1, y1, x2, y2],\r\n    ...\r\n  ],\r\n  \"processing_time\": 0.123\r\n}\r\n```\r\n\r\n#### 3. 滑块匹配接口\r\n\r\n```\r\nPOST /slide_match\r\n```\r\n\r\n请求体：\r\n\r\n```json\r\n{\r\n  \"target_image\": \"目标图片的Base64编码字符串\",\r\n  \"background_image\": \"背景图片的Base64编码字符串\",\r\n  \"simple_target\": false,\r\n  \"flag\": false\r\n}\r\n```\r\n\r\n响应：\r\n\r\n```json\r\n{\r\n  \"result\": {\r\n    \"target_x\": 0,\r\n    \"target_y\": 0,\r\n    \"target\": [x1, y1, x2, y2]\r\n  },\r\n  \"processing_time\": 0.123\r\n}\r\n```\r\n\r\n#### 4. 滑块比较接口\r\n\r\n```\r\nPOST /slide_comparison\r\n```\r\n\r\n请求体：\r\n\r\n```json\r\n{\r\n  \"target_image\": \"目标图片的Base64编码字符串\",\r\n  \"background_image\": \"背景图片的Base64编码字符串\"\r\n}\r\n```\r\n\r\n响应：\r\n\r\n```json\r\n{\r\n  \"result\": {\r\n    \"target\": [x, y]\r\n  },\r\n  \"processing_time\": 0.123\r\n}\r\n```\r\n\r\n#### 5. 设置字符范围接口\r\n\r\n```\r\nPOST /set_charset_range\r\n```\r\n\r\n请求体：\r\n\r\n```json\r\n{\r\n  \"charset_range\": [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"]\r\n}\r\n```\r\n\r\n响应：\r\n\r\n```json\r\n{\r\n  \"result\": \"字符范围设置成功\",\r\n  \"charset_range\": [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"],\r\n  \"processing_time\": 0.123\r\n}\r\n```\r\n\r\n\r\n#### 6. 健康检查接口\r\n\r\n```\r\nGET /health\r\n```\r\n\r\n响应：\r\n\r\n```json\r\n{\r\n  \"status\": \"ok\",\r\n  \"timestamp\": 1628765432.1234\r\n}\r\n```\r\n\r\n#### 文件上传接口\r\n\r\n所有上述接口都支持通过表单上传文件的方式提交请求。例如：\r\n\r\n```\r\nPOST /ocr/file\r\n```\r\n\r\n可以通过表单字段上传图片文件。\r\n\r\n### API 客户端示例\r\n\r\n#### Python 示例 (Base64编码方式)\r\n\r\n```python\r\nimport requests\r\nimport base64\r\n\r\n# 读取图片文件并Base64编码\r\nwith open(\"captcha.png\", \"rb\") as f:\r\n    img_base64 = base64.b64encode(f.read()).decode()\r\n\r\n# 发送OCR请求\r\nurl = \"http://localhost:8000/ocr\"\r\nresponse = requests.post(url, json={\"image\": img_base64})\r\n\r\n# 处理响应\r\nresult = response.json()\r\nprint(f\"识别结果: {result['result']}\")\r\n```\r\n\r\n#### Python 示例 (文件上传方式)\r\n\r\n```python\r\nimport requests\r\n\r\n# 准备文件\r\nfiles = {\"file\": open(\"captcha.png\", \"rb\")}\r\n\r\n# 发送OCR请求\r\nurl = \"http://localhost:8000/ocr/file\"\r\nresponse = requests.post(url, files=files)\r\n\r\n# 处理响应\r\nresult = response.json()\r\nprint(f\"识别结果: {result['result']}\")\r\n```\r\n\r\n### Docker 环境变量配置参考\r\n\r\n| 环境变量名 | 默认值 | 说明 |\r\n|-----------|-------|------|\r\n| `DDDDOCR_HOST` | 0.0.0.0（CLI 默认）/ 127.0.0.1（直接运行 `python -m ddddocr.api` 默认） | API 服务主机地址 |\n| `DDDDOCR_PORT` | 8000 | API 服务端口 |\r\n| `DDDDOCR_WORKERS` | 1 | API 服务工作进程数 |\r\n| `DDDDOCR_OCR` | true | 是否启用 OCR 功能 |\r\n| `DDDDOCR_DET` | false | 是否启用目标检测功能 |\r\n| `DDDDOCR_OLD` | false | 是否使用旧版 OCR 模型 |\r\n| `DDDDOCR_BETA` | false | 是否使用 Beta 版 OCR 模型 |\r\n| `DDDDOCR_USE_GPU` | false | 是否使用 GPU 加速 |\r\n| `DDDDOCR_DEVICE_ID` | 0 | GPU 设备 ID |\r\n| `DDDDOCR_SHOW_AD` | true | 是否显示广告 |\r\n| `DDDDOCR_IMPORT_ONNX_PATH` | \"\" | 自定义模型路径 |\r\n| `DDDDOCR_CHARSETS_PATH` | \"\" | 自定义字符集路径 |\r\n\r\n## 许可证\r\n\r\n本项目采用MIT许可证，详情请参阅[LICENSE](https://github.com/sml2h3/ddddocr/blob/master/LICENSE)文件。 \r\n## 输入与输出校验说明\r\n\r\n- **图片合法性**：所有 Base64 与文件上传都会做尺寸、格式与大小校验（默认上限 8192 KB、最长边 4096px，可在实例化 `DdddOcr(max_image_bytes=..., max_image_side=...)` 时自定义），异常时返回 400。\r\n- **允许格式**：PNG / JPEG / JPG / WEBP / BMP / GIF / TIFF。\r\n- **输入类型**：本地调用支持 `bytes/bytearray`、Base64 字符串、文件路径或 `PIL.Image`。\r\n- **类型约束**：`DdddOcr` 的公开方法会校验布尔/整数参数，`FastAPI` 层也通过 Pydantic 验证请求体，错误会带具体字段。\r\n- **统一异常**：核心库新增 `DdddOcrInputError` / `InvalidImageError`，API 会把这些异常映射为 400，方便调用方处理。\r\n- **响应结构**：HTTP 接口现有明确的 `response_model`，文档 (`/docs`) 中可直接查看字段含义。\r\n- **模式提示**：在 `det=True` 模式下调用 `classification` 会抛出 “当前识别类型为目标检测”。\r\n\r\n## 示例库\r\n\r\n仓库新增 `examples/` 目录，覆盖本地调用、目标检测和 HTTP 客户端等典型场景：\r\n\r\n- `basic_ocr.py`：最小 OCR 示例，可演示概率输出与颜色过滤。\r\n- `detector.py`：演示如何用 `det=True` 模式返回所有检测框。\r\n- `api_client.py`：演示如何向 `python -m ddddocr api` 服务发送 JSON 请求。\r\n- `generate_basic_ocr_cases.py`：生成基础 OCR 测试用例图片。\r\n\r\n详细说明见 `examples/README.md`，可结合 README 其他章节快速起步。\r\n"
  },
  {
    "path": "ddddocr/__init__.py",
    "content": "# coding=utf-8\n# 从兼容层导入主类（新的模块化结构）\nfrom .compat.v1 import DdddOcr\n\nfrom .utils import (\n    ALLOWED_IMAGE_FORMATS,\n    MAX_IMAGE_BYTES,\n    MAX_IMAGE_SIDE,\n    DdddOcrInputError,\n    InvalidImageError,\n    TypeError,\n    base64_to_image,\n    get_img_base64,\n)\n\n__all__ = [\n    \"ALLOWED_IMAGE_FORMATS\",\n    \"MAX_IMAGE_BYTES\",\n    \"MAX_IMAGE_SIDE\",\n    \"DdddOcr\",\n    \"DdddOcrInputError\",\n    \"InvalidImageError\",\n    \"TypeError\",\n    \"base64_to_image\",\n    \"get_img_base64\",\n]\n"
  },
  {
    "path": "ddddocr/__main__.py",
    "content": "﻿#!/usr/bin/env python\n# -*- coding: utf-8 -*-\nimport argparse\nimport sys\nimport os\n\n\ndef main():\n    \"\"\"\n    ddddocr 命令行入口点\n    \"\"\"\n    parser = argparse.ArgumentParser(description='DdddOcr 通用验证码识别工具')\n    \n    # API 子命令\n    subparsers = parser.add_subparsers(dest='command', help='子命令')\n    \n    # API 服务子命令\n    api_parser = subparsers.add_parser('api', help='启动 API 服务')\n    \n    # API 服务配置\n    api_parser.add_argument('--host', type=str, default='0.0.0.0',\n                           help='API 服务主机地址，默认 0.0.0.0')\n    api_parser.add_argument('--port', type=int, default=8000,\n                           help='API 服务端口，默认 8000')\n    api_parser.add_argument('--workers', type=int, default=1,\n                           help='API 服务工作进程数，默认为 1')\n    \n    # OCR 引擎配置\n    api_parser.add_argument('--ocr', type=lambda x: x.lower() == 'true', default=True,\n                           help='是否启用 OCR 功能（true/false）')\n    api_parser.add_argument('--det', type=lambda x: x.lower() == 'true', default=False,\n                           help='是否启用目标检测功能（true/false）')\n    api_parser.add_argument('--old', type=lambda x: x.lower() == 'true', default=False,\n                           help='是否使用旧版 OCR 模型（true/false）')\n    api_parser.add_argument('--beta', type=lambda x: x.lower() == 'true', default=False,\n                           help='是否使用 Beta 版 OCR 模型（true/false）')\n    api_parser.add_argument('--use-gpu', type=lambda x: x.lower() == 'true', default=False,\n                           help='是否使用 GPU 加速（true/false）')\n    api_parser.add_argument('--device-id', type=int, default=0,\n                           help='GPU 设备 ID，默认 0')\n    api_parser.add_argument('--show-ad', type=lambda x: x.lower() == 'true', default=True,\n                           help='是否显示广告（true/false）')\n    api_parser.add_argument('--import-onnx-path', type=str, default='',\n                           help='自定义模型路径')\n    api_parser.add_argument('--charsets-path', type=str, default='',\n                           help='自定义字符集路径')\n    \n    # 解析命令行参数\n    args = parser.parse_args()\n    \n    # 处理命令\n    if args.command == 'api':\n        # 设置环境变量\n        os.environ['DDDDOCR_HOST'] = args.host\n        os.environ['DDDDOCR_PORT'] = str(args.port)\n        os.environ['DDDDOCR_WORKERS'] = str(args.workers)\n        os.environ['DDDDOCR_OCR'] = str(args.ocr).lower()\n        os.environ['DDDDOCR_DET'] = str(args.det).lower()\n        os.environ['DDDDOCR_OLD'] = str(args.old).lower()\n        os.environ['DDDDOCR_BETA'] = str(args.beta).lower()\n        os.environ['DDDDOCR_USE_GPU'] = str(args.use_gpu).lower()\n        os.environ['DDDDOCR_DEVICE_ID'] = str(args.device_id)\n        os.environ['DDDDOCR_SHOW_AD'] = str(args.show_ad).lower()\n        os.environ['DDDDOCR_IMPORT_ONNX_PATH'] = args.import_onnx_path\n        os.environ['DDDDOCR_CHARSETS_PATH'] = args.charsets_path\n        \n        # 导入 API 模块并启动服务\n        from ddddocr.api import main as api_main\n        api_main()\n    else:\n        # 没有提供子命令，显示帮助\n        parser.print_help()\n        return 1\n    \n    return 0\n\n\nif __name__ == '__main__':\n    sys.exit(main()) \n"
  },
  {
    "path": "ddddocr/api/__init__.py",
    "content": "# coding=utf-8\n\"\"\"\nddddocr HTTP API服务模块\n提供RESTful API接口和MCP协议支持\n\"\"\"\n\n__version__ = \"1.6.1\"\n__author__ = \"sml2h3\"\n\nfrom .server import create_app, run_server\nfrom .models import *\nfrom .app import app, main\n\n__all__ = ['create_app', 'run_server', 'app', 'main']\n"
  },
  {
    "path": "ddddocr/api/__main__.py",
    "content": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\"\"\"\n允许通过 `python -m ddddocr.api` 启动 API 服务（向后兼容）。\n\"\"\"\nfrom .app import main\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "ddddocr/api/app.py",
    "content": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\nfrom fastapi import FastAPI, UploadFile, File, Form, HTTPException, Query, BackgroundTasks\nfrom fastapi.middleware.cors import CORSMiddleware\ntry:\n    from pydantic import BaseModel, Field, field_validator\nexcept ImportError:  # pragma: no cover - fallback for older pydantic\n    from pydantic import BaseModel, Field, validator as field_validator\nimport uvicorn\nimport base64\nimport io\nimport os\nimport binascii\nfrom typing import Optional, List, Union, Dict, Any\nimport time\nfrom PIL import Image\nimport logging\nimport sys\nimport json\n\n# 设置日志配置\nlogging.basicConfig(\n    level=logging.INFO,\n    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',\n    handlers=[logging.StreamHandler(sys.stdout)]\n)\nlogger = logging.getLogger(\"ddddocr-api\")\n\n# 导入 ddddocr\ntry:\n    from . import DdddOcr, DdddOcrInputError, InvalidImageError, MAX_IMAGE_BYTES as CORE_MAX_IMAGE_BYTES\nexcept ImportError:\n    import ddddocr\n    DdddOcr = ddddocr.DdddOcr\n    DdddOcrInputError = getattr(ddddocr, 'DdddOcrInputError', Exception)\n    InvalidImageError = getattr(ddddocr, 'InvalidImageError', Exception)\n    CORE_MAX_IMAGE_BYTES = getattr(ddddocr, 'MAX_IMAGE_BYTES', 8 * 1024 * 1024)\n\n# 全局变量存储OCR实例\nocr_instances: Dict[str, Dict[str, Any]] = {}\n\n\ndef _validate_base64_payload(value: str, field_name: str) -> str:\n    if not isinstance(value, str) or not value.strip():\n        raise ValueError(f\"{field_name} 不能为空\")\n    try:\n        decoded = base64.b64decode(value, validate=True)\n    except binascii.Error as exc:\n        raise ValueError(f\"{field_name} 不是合法的Base64字符串\") from exc\n    if len(decoded) == 0:\n        raise ValueError(f\"{field_name} 内容为空\")\n    if len(decoded) > CORE_MAX_IMAGE_BYTES:\n        raise ValueError(f\"{field_name} 大小超过 {CORE_MAX_IMAGE_BYTES // 1024}KB 限制\")\n    return value\n\n\ndef _decode_base64_bytes(value: str) -> bytes:\n    try:\n        return base64.b64decode(value, validate=True)\n    except binascii.Error as exc:\n        raise HTTPException(status_code=400, detail=\"Base64 内容错误\") from exc\n\n\ndef _ensure_colors_list(data: List[Any]) -> List[str]:\n    if not isinstance(data, list):\n        raise HTTPException(status_code=400, detail=\"colors 必须是字符串列表\")\n    normalized = []\n    for item in data:\n        if not isinstance(item, str):\n            raise HTTPException(status_code=400, detail=\"colors 列表中必须是字符串\")\n        stripped = item.strip()\n        if stripped:\n            normalized.append(stripped)\n    return normalized\n\n\ndef _validate_custom_range_dict(parsed: Dict[str, List[List[int]]]) -> Dict[str, List[List[int]]]:\n    if not isinstance(parsed, dict):\n        raise ValueError(\"custom_color_ranges 必须是字典\")\n    for key, ranges in parsed.items():\n        if not isinstance(key, str):\n            raise ValueError(\"custom_color_ranges 的键必须为字符串\")\n        if not isinstance(ranges, list):\n            raise ValueError(\"custom_color_ranges 的值必须为列表\")\n        for segment in ranges:\n            if not isinstance(segment, list) or len(segment) != 3:\n                raise ValueError(\"颜色区间必须是长度为3的列表\")\n            for value in segment:\n                if not isinstance(value, int):\n                    raise ValueError(\"颜色区间中的值需要为整数\")\n                if not 0 <= value <= 255:\n                    raise ValueError(\"颜色区间的值需位于0-255之间\")\n    return parsed\n\n\ndef _ensure_custom_ranges(data: Any) -> Optional[Dict[str, List[List[int]]]]:\n    if data in (None, \"null\", \"\"):\n        return None\n    if isinstance(data, str):\n        try:\n            parsed = json.loads(data)\n        except json.JSONDecodeError as exc:\n            raise HTTPException(status_code=400, detail=\"custom_color_ranges JSON 解析失败\") from exc\n    else:\n        parsed = data\n    if parsed is None:\n        return None\n    try:\n        return _validate_custom_range_dict(parsed)\n    except ValueError as exc:\n        raise HTTPException(status_code=400, detail=str(exc)) from exc\n\n\ndef _coerce_bool_param(value: Union[bool, str], field_name: str) -> bool:\n    if isinstance(value, bool):\n        return value\n    if isinstance(value, str):\n        lowered = value.strip().lower()\n        if lowered in {'true', '1', 'yes', 'y'}:\n            return True\n        if lowered in {'false', '0', 'no', 'n'}:\n            return False\n    raise HTTPException(status_code=400, detail=f\"{field_name} 只能是布尔值\")\n\n# 定义请求模型\nclass Base64Image(BaseModel):\n    image: str = Field(..., description=\"Base64编码的图片数据\")\n    \n    @field_validator('image')\n    def validate_image(cls, value):\n        return _validate_base64_payload(value, 'image')\n    \nclass OCRRequest(Base64Image):\n    probability: bool = Field(False, description=\"是否返回识别概率\")\n    colors: List[str] = Field(default_factory=list, description=\"颜色过滤列表\")\n    custom_color_ranges: Optional[Dict[str, List[List[int]]]] = Field(None, description=\"自定义颜色范围\")\n\n    @field_validator('colors')\n    def validate_colors(cls, value):\n        if value is None:\n            return []\n        if not isinstance(value, list):\n            raise ValueError('colors 必须是字符串列表')\n        normalized = []\n        for item in value:\n            if not isinstance(item, str):\n                raise ValueError('colors 中的元素必须是字符串')\n            stripped = item.strip()\n            if not stripped:\n                raise ValueError('colors 不允许包含空字符串')\n            normalized.append(stripped)\n        return normalized\n\n    @field_validator('custom_color_ranges')\n    def validate_custom_ranges(cls, value):\n        if value is None:\n            return value\n        return _validate_custom_range_dict(value)\n    \nclass SlideMatchRequest(BaseModel):\n    target_image: str = Field(..., description=\"目标图片的Base64编码\")\n    background_image: str = Field(..., description=\"背景图片的Base64编码\")\n    simple_target: bool = Field(False, description=\"是否使用简化目标\")\n    flag: bool = Field(False, description=\"标记选项\")\n\n    @field_validator('target_image')\n    def validate_target_image(cls, value):\n        return _validate_base64_payload(value, 'target_image')\n\n    @field_validator('background_image')\n    def validate_background_image(cls, value):\n        return _validate_base64_payload(value, 'background_image')\n    \nclass SlideComparisonRequest(BaseModel):\n    target_image: str = Field(..., description=\"目标图片的Base64编码\")\n    background_image: str = Field(..., description=\"背景图片的Base64编码\")\n\n    @field_validator('target_image')\n    def validate_target_image(cls, value):\n        return _validate_base64_payload(value, 'target_image')\n\n    @field_validator('background_image')\n    def validate_background_image(cls, value):\n        return _validate_base64_payload(value, 'background_image')\n    \nclass CharsetRangeRequest(BaseModel):\n    charset_range: List[str] = Field(..., description=\"字符范围\")\n\n    @field_validator('charset_range')\n    def validate_charset(cls, value):\n        if not isinstance(value, list):\n            raise ValueError('charset_range 需要为字符串列表')\n        normalized = []\n        for item in value:\n            if not isinstance(item, str) or not item:\n                raise ValueError('charset_range 需要为非空字符串')\n            normalized.append(item)\n        return normalized\n\nclass ModelConfig(BaseModel):\n    ocr: bool = Field(True, description=\"是否启用OCR功能\")\n    det: bool = Field(False, description=\"是否启用目标检测功能\")\n    old: bool = Field(False, description=\"是否使用旧版OCR模型\")\n    beta: bool = Field(False, description=\"是否使用Beta版OCR模型\")\n    use_gpu: bool = Field(False, description=\"是否使用GPU加速\")\n    device_id: int = Field(0, description=\"GPU设备ID\")\n    show_ad: bool = Field(True, description=\"是否显示广告\")\n    import_onnx_path: str = Field(\"\", description=\"自定义模型路径\")\n    charsets_path: str = Field(\"\", description=\"自定义字符集路径\")\n\n\nclass OCRResponse(BaseModel):\n    result: Union[str, Dict[str, Any]]\n    probability: Optional[Any] = None\n    processing_time: float\n\n\nclass DetectionResponse(BaseModel):\n    result: List[List[int]]\n    processing_time: float\n\n\nclass SlideMatchResult(BaseModel):\n    target_x: int\n    target_y: int\n    target: List[int]\n\n\nclass SlideMatchResponse(BaseModel):\n    result: SlideMatchResult\n    processing_time: float\n\n\nclass SlideComparisonResponse(BaseModel):\n    result: Dict[str, List[int]]\n    processing_time: float\n\n# 函数：获取OCR实例\ndef get_ocr_instance(\n    config_key: str,\n    ocr: bool = True,\n    det: bool = False,\n    old: bool = False,\n    beta: bool = False,\n    use_gpu: bool = False,\n    device_id: int = 0,\n    show_ad: bool = True,\n    import_onnx_path: str = \"\",\n    charsets_path: str = \"\"\n):\n    \"\"\"\n    获取或创建OCR实例\n    \"\"\"\n    if config_key in ocr_instances:\n        ocr_instances[config_key][\"last_used\"] = time.time()\n        return ocr_instances[config_key][\"instance\"]\n\n    logger.info(f\"创建新的OCR实例，配置: {config_key}\")\n    try:\n        instance = DdddOcr(\n            ocr=ocr,\n            det=det,\n            old=old,\n            beta=beta,\n            use_gpu=use_gpu,\n            device_id=device_id,\n            show_ad=show_ad,\n            import_onnx_path=import_onnx_path,\n            charsets_path=charsets_path\n        )\n        ocr_instances[config_key] = {\n            \"instance\": instance,\n            \"last_used\": time.time()\n        }\n        return instance\n    except (DdddOcrInputError, InvalidImageError) as e:\n        logger.error(f\"创建OCR实例失败: {str(e)}\")\n        raise HTTPException(status_code=400, detail=str(e)) from e\n    except Exception as e:\n        logger.error(f\"创建OCR实例失败: {str(e)}\")\n        raise HTTPException(status_code=500, detail=f\"初始化OCR失败: {str(e)}\") from e\n\n# 清理不活跃的OCR实例\ndef cleanup_inactive_instances(max_idle_time: int = 3600):\n    \"\"\"\n    清理长时间不活跃的OCR实例以释放内存\n    \"\"\"\n    global ocr_instances\n    current_time = time.time()\n    instances_to_remove = []\n    \n    for key, instance_data in ocr_instances.items():\n        if current_time - instance_data[\"last_used\"] > max_idle_time:\n            instances_to_remove.append(key)\n    \n    for key in instances_to_remove:\n        del ocr_instances[key]\n        logger.info(f\"已清理不活跃的OCR实例: {key}\")\n\n# 创建FastAPI应用\napp = FastAPI(\n    title=\"DdddOcr API\",\n    description=\"DdddOcr通用验证码识别API服务\",\n    version=\"1.6.1\",\n    docs_url=\"/docs\",\n    redoc_url=\"/redoc\"\n)\n\n# 添加CORS中间件\napp.add_middleware(\n    CORSMiddleware,\n    allow_origins=[\"*\"],\n    allow_credentials=True,\n    allow_methods=[\"*\"],\n    allow_headers=[\"*\"],\n)\n\n# 定义API默认参数\ndefault_ocr = os.environ.get(\"DDDDOCR_OCR\", \"true\").lower() == \"true\"\ndefault_det = os.environ.get(\"DDDDOCR_DET\", \"false\").lower() == \"true\"\ndefault_old = os.environ.get(\"DDDDOCR_OLD\", \"false\").lower() == \"true\"\ndefault_beta = os.environ.get(\"DDDDOCR_BETA\", \"false\").lower() == \"true\"\ndefault_use_gpu = os.environ.get(\"DDDDOCR_USE_GPU\", \"false\").lower() == \"true\"\ndefault_device_id = int(os.environ.get(\"DDDDOCR_DEVICE_ID\", \"0\"))\ndefault_show_ad = os.environ.get(\"DDDDOCR_SHOW_AD\", \"true\").lower() == \"true\"\ndefault_import_onnx_path = os.environ.get(\"DDDDOCR_IMPORT_ONNX_PATH\", \"\")\ndefault_charsets_path = os.environ.get(\"DDDDOCR_CHARSETS_PATH\", \"\")\n\n# 健康检查端点\n@app.get(\"/health\")\nasync def health_check():\n    return {\"status\": \"ok\", \"timestamp\": time.time()}\n\n# OCR识别端点 - JSON请求\n@app.post(\"/ocr\", response_model=OCRResponse)\nasync def ocr_recognition(\n    request: OCRRequest,\n    background_tasks: BackgroundTasks,\n    ocr: bool = Query(default_ocr, description=\"是否启用OCR功能\"),\n    det: bool = Query(default_det, description=\"是否启用目标检测功能\"),\n    old: bool = Query(default_old, description=\"是否使用旧版OCR模型\"),\n    beta: bool = Query(default_beta, description=\"是否使用Beta版OCR模型\"),\n    use_gpu: bool = Query(default_use_gpu, description=\"是否使用GPU加速\"),\n    device_id: int = Query(default_device_id, description=\"GPU设备ID\"),\n    show_ad: bool = Query(default_show_ad, description=\"是否显示广告\")\n):\n    \"\"\"\n    OCR文字识别 - 接收Base64编码的图片\n    \"\"\"\n    image = None\n    try:\n        img_data = _decode_base64_bytes(request.image)\n        image = Image.open(io.BytesIO(img_data))\n    except HTTPException:\n        raise\n    except Exception as exc:\n        logger.error(f\"OCR请求图片解析失败: {str(exc)}\")\n        raise HTTPException(status_code=400, detail=\"无法读取图片\") from exc\n\n    config_key = f\"ocr={ocr}-det={det}-old={old}-beta={beta}-gpu={use_gpu}-dev={device_id}\"\n\n    ocr_instance = get_ocr_instance(\n        config_key, ocr, det, old, beta, use_gpu, device_id, show_ad,\n        default_import_onnx_path, default_charsets_path\n    )\n\n    start_time = time.time()\n    try:\n        if request.probability:\n            result = ocr_instance.classification(\n                image,\n                probability=True,\n                colors=request.colors,\n                custom_color_ranges=request.custom_color_ranges\n            )\n            response_data = {\n                \"result\": result,\n                \"processing_time\": time.time() - start_time\n            }\n        else:\n            result = ocr_instance.classification(\n                image,\n                colors=request.colors,\n                custom_color_ranges=request.custom_color_ranges\n            )\n            response_data = {\n                \"result\": result,\n                \"processing_time\": time.time() - start_time\n            }\n    except (DdddOcrInputError, InvalidImageError) as exc:\n        logger.warning(f\"OCR识别参数错误: {str(exc)}\")\n        raise HTTPException(status_code=400, detail=str(exc)) from exc\n    except Exception as exc:\n        logger.error(f\"OCR识别失败: {str(exc)}\")\n        raise HTTPException(status_code=500, detail=f\"OCR识别失败: {str(exc)}\") from exc\n    finally:\n        if image is not None:\n            try:\n                image.close()\n            except Exception:\n                pass\n\n    background_tasks.add_task(cleanup_inactive_instances)\n    return response_data\n\n# OCR识别端点 - 文件上传\n# OCR识别端点 - 文件上传\n@app.post(\"/ocr/file\", response_model=OCRResponse)\nasync def ocr_recognition_file(\n    background_tasks: BackgroundTasks,\n    file: UploadFile = File(...),\n    probability: Union[bool, str] = Form(False),\n    colors: str = Form(\"[]\"),\n    custom_color_ranges: str = Form(\"null\"),\n    ocr: bool = Query(default_ocr, description=\"是否启用OCR功能\"),\n    det: bool = Query(default_det, description=\"是否启用目标检测功能\"),\n    old: bool = Query(default_old, description=\"是否使用旧版OCR模型\"),\n    beta: bool = Query(default_beta, description=\"是否使用Beta版OCR模型\"),\n    use_gpu: bool = Query(default_use_gpu, description=\"是否使用GPU加速\"),\n    device_id: int = Query(default_device_id, description=\"GPU设备ID\"),\n    show_ad: bool = Query(default_show_ad, description=\"是否显示广告\")\n):\n    \"\"\"\n    OCR文字识别 - 接收上传的图片文件\n    \"\"\"\n    image = None\n    try:\n        contents = await file.read()\n    except Exception as exc:\n        raise HTTPException(status_code=400, detail=\"无法读取上传文件\") from exc\n\n    if not contents:\n        raise HTTPException(status_code=400, detail=\"上传文件为空\")\n    if len(contents) > CORE_MAX_IMAGE_BYTES:\n        raise HTTPException(\n            status_code=400,\n            detail=f\"图片大小超过 {CORE_MAX_IMAGE_BYTES // 1024}KB 限制\"\n        )\n    try:\n        image = Image.open(io.BytesIO(contents))\n    except Exception as exc:\n        raise HTTPException(status_code=400, detail=\"无法解析上传的图片\") from exc\n\n    try:\n        colors_data = json.loads(colors) if colors else []\n    except json.JSONDecodeError as exc:\n        raise HTTPException(status_code=400, detail=\"colors JSON 解析失败\") from exc\n    colors_list = _ensure_colors_list(colors_data)\n    custom_ranges = _ensure_custom_ranges(custom_color_ranges)\n    probability_flag = _coerce_bool_param(probability, 'probability')\n\n    config_key = f\"ocr={ocr}-det={det}-old={old}-beta={beta}-gpu={use_gpu}-dev={device_id}\"\n\n    ocr_instance = get_ocr_instance(\n        config_key, ocr, det, old, beta, use_gpu, device_id, show_ad,\n        default_import_onnx_path, default_charsets_path\n    )\n\n    start_time = time.time()\n    try:\n        if probability_flag:\n            result = ocr_instance.classification(\n                image,\n                probability=True,\n                colors=colors_list,\n                custom_color_ranges=custom_ranges\n            )\n            response_data = {\n                \"result\": result,\n                \"processing_time\": time.time() - start_time\n            }\n        else:\n            result = ocr_instance.classification(\n                image,\n                colors=colors_list,\n                custom_color_ranges=custom_ranges\n            )\n            response_data = {\n                \"result\": result,\n                \"processing_time\": time.time() - start_time\n            }\n    except (DdddOcrInputError, InvalidImageError) as exc:\n        raise HTTPException(status_code=400, detail=str(exc)) from exc\n    except Exception as exc:\n        logger.error(f\"OCR文件识别失败: {str(exc)}\")\n        raise HTTPException(status_code=500, detail=f\"OCR识别失败: {str(exc)}\") from exc\n    finally:\n        if image is not None:\n            try:\n                image.close()\n            except Exception:\n                pass\n\n    background_tasks.add_task(cleanup_inactive_instances)\n    return response_data\n\n# 目标检测端点\n# 目标检测端点\n# 目标检测端点\n@app.post(\"/det\", response_model=DetectionResponse)\nasync def object_detection(\n    request: Base64Image,\n    background_tasks: BackgroundTasks,\n    ocr: bool = Query(False, description=\"是否启用OCR功能\"),\n    det: bool = Query(True, description=\"是否启用目标检测功能\"),\n    use_gpu: bool = Query(default_use_gpu, description=\"是否使用GPU加速\"),\n    device_id: int = Query(default_device_id, description=\"GPU设备ID\"),\n    show_ad: bool = Query(default_show_ad, description=\"是否显示广告\")\n):\n    \"\"\"\n    目标检测功能 - 接收Base64编码的图片\n    \"\"\"\n    try:\n        img_data = _decode_base64_bytes(request.image)\n    except HTTPException:\n        raise\n\n    config_key = f\"ocr={ocr}-det={det}-gpu={use_gpu}-dev={device_id}\"\n\n    ocr_instance = get_ocr_instance(\n        config_key, ocr, det, False, False, use_gpu, device_id, show_ad,\n        default_import_onnx_path, default_charsets_path\n    )\n\n    start_time = time.time()\n    try:\n        result = ocr_instance.detection(img_bytes=img_data)\n    except (DdddOcrInputError, InvalidImageError) as exc:\n        raise HTTPException(status_code=400, detail=str(exc)) from exc\n    except Exception as exc:\n        logger.error(f\"目标检测失败: {str(exc)}\")\n        raise HTTPException(status_code=500, detail=f\"目标检测失败: {str(exc)}\") from exc\n\n    background_tasks.add_task(cleanup_inactive_instances)\n\n    return {\n        \"result\": result,\n        \"processing_time\": time.time() - start_time\n    }\n\n# 目标检测端点 - 文件上传\n@app.post(\"/det/file\", response_model=DetectionResponse)\nasync def object_detection_file(\n    background_tasks: BackgroundTasks,\n    file: UploadFile = File(...),\n    ocr: bool = Query(False, description=\"是否启用OCR功能\"),\n    det: bool = Query(True, description=\"是否启用目标检测功能\"),\n    use_gpu: bool = Query(default_use_gpu, description=\"是否使用GPU加速\"),\n    device_id: int = Query(default_device_id, description=\"GPU设备ID\"),\n    show_ad: bool = Query(default_show_ad, description=\"是否显示广告\")\n):\n    \"\"\"\n    目标检测功能 - 接收上传的图片文件\n    \"\"\"\n    try:\n        contents = await file.read()\n    except Exception as exc:\n        raise HTTPException(status_code=400, detail=\"无法读取上传文件\") from exc\n\n    if not contents:\n        raise HTTPException(status_code=400, detail=\"上传文件为空\")\n    if len(contents) > CORE_MAX_IMAGE_BYTES:\n        raise HTTPException(\n            status_code=400,\n            detail=f\"图片大小超过 {CORE_MAX_IMAGE_BYTES // 1024}KB 限制\"\n        )\n\n    config_key = f\"ocr={ocr}-det={det}-gpu={use_gpu}-dev={device_id}\"\n\n    ocr_instance = get_ocr_instance(\n        config_key, ocr, det, False, False, use_gpu, device_id, show_ad,\n        default_import_onnx_path, default_charsets_path\n    )\n\n    start_time = time.time()\n    try:\n        result = ocr_instance.detection(img_bytes=contents)\n    except (DdddOcrInputError, InvalidImageError) as exc:\n        raise HTTPException(status_code=400, detail=str(exc)) from exc\n    except Exception as exc:\n        logger.error(f\"目标检测文件识别失败: {str(exc)}\")\n        raise HTTPException(status_code=500, detail=f\"目标检测失败: {str(exc)}\") from exc\n\n    background_tasks.add_task(cleanup_inactive_instances)\n\n    return {\n        \"result\": result,\n        \"processing_time\": time.time() - start_time\n    }\n\n# 滑块匹配端点\n@app.post(\"/slide_match\", response_model=SlideMatchResponse)\nasync def slide_match_recognition(\n    request: SlideMatchRequest,\n    background_tasks: BackgroundTasks,\n    ocr: bool = Query(False, description=\"是否启用OCR功能\"),\n    det: bool = Query(False, description=\"是否启用目标检测功能\"),\n    use_gpu: bool = Query(default_use_gpu, description=\"是否使用GPU加速\"),\n    device_id: int = Query(default_device_id, description=\"GPU设备ID\"),\n    show_ad: bool = Query(default_show_ad, description=\"是否显示广告\")\n):\n    \"\"\"\n    滑块验证码匹配 - 接收Base64编码的目标图和背景图\n    \"\"\"\n    target_data = _decode_base64_bytes(request.target_image)\n    background_data = _decode_base64_bytes(request.background_image)\n\n    config_key = f\"ocr={ocr}-det={det}-gpu={use_gpu}-dev={device_id}\"\n\n    ocr_instance = get_ocr_instance(\n        config_key, ocr, det, False, False, use_gpu, device_id, show_ad,\n        default_import_onnx_path, default_charsets_path\n    )\n\n    start_time = time.time()\n    try:\n        result = ocr_instance.slide_match(\n            target_bytes=target_data,\n            background_bytes=background_data,\n            simple_target=request.simple_target,\n            flag=request.flag\n        )\n    except (DdddOcrInputError, InvalidImageError) as exc:\n        raise HTTPException(status_code=400, detail=str(exc)) from exc\n    except Exception as exc:\n        logger.error(f\"滑块匹配失败: {str(exc)}\")\n        raise HTTPException(status_code=500, detail=f\"滑块匹配失败: {str(exc)}\") from exc\n\n    background_tasks.add_task(cleanup_inactive_instances)\n    return {\n        \"result\": result,\n        \"processing_time\": time.time() - start_time\n    }\n\n# 滑块比较端点\n@app.post(\"/slide_comparison\", response_model=SlideComparisonResponse)\nasync def slide_comparison_recognition(\n    request: SlideComparisonRequest,\n    background_tasks: BackgroundTasks,\n    ocr: bool = Query(False, description=\"是否启用OCR功能\"),\n    det: bool = Query(False, description=\"是否启用目标检测功能\"),\n    use_gpu: bool = Query(default_use_gpu, description=\"是否使用GPU加速\"),\n    device_id: int = Query(default_device_id, description=\"GPU设备ID\"),\n    show_ad: bool = Query(default_show_ad, description=\"是否显示广告\")\n):\n    \"\"\"\n    滑块验证码图像差异比较 - 接收Base64编码的目标图和背景图\n    \"\"\"\n    target_data = _decode_base64_bytes(request.target_image)\n    background_data = _decode_base64_bytes(request.background_image)\n\n    config_key = f\"ocr={ocr}-det={det}-gpu={use_gpu}-dev={device_id}\"\n\n    ocr_instance = get_ocr_instance(\n        config_key, ocr, det, False, False, use_gpu, device_id, show_ad,\n        default_import_onnx_path, default_charsets_path\n    )\n\n    start_time = time.time()\n    try:\n        result = ocr_instance.slide_comparison(\n            target_bytes=target_data,\n            background_bytes=background_data\n        )\n    except (DdddOcrInputError, InvalidImageError) as exc:\n        raise HTTPException(status_code=400, detail=str(exc)) from exc\n    except Exception as exc:\n        logger.error(f\"滑块比较失败: {str(exc)}\")\n        raise HTTPException(status_code=500, detail=f\"滑块比较失败: {str(exc)}\") from exc\n\n    background_tasks.add_task(cleanup_inactive_instances)\n\n    return {\n        \"result\": result,\n        \"processing_time\": time.time() - start_time\n    }\n\n# 设置字符范围端点\n# 设置字符范围端点\n@app.post(\"/set_charset_range\")\nasync def set_charset_range(\n    request: CharsetRangeRequest,\n    background_tasks: BackgroundTasks,\n    ocr: bool = Query(True, description=\"是否启用OCR功能\"),\n    det: bool = Query(False, description=\"是否启用目标检测功能\"),\n    old: bool = Query(default_old, description=\"是否使用旧版OCR模型\"),\n    beta: bool = Query(default_beta, description=\"是否使用Beta版OCR模型\"),\n    use_gpu: bool = Query(default_use_gpu, description=\"是否使用GPU加速\"),\n    device_id: int = Query(default_device_id, description=\"GPU设备ID\"),\n    show_ad: bool = Query(default_show_ad, description=\"是否显示广告\")\n):\n    \"\"\"\n    设置OCR识别的字符范围\n    \"\"\"\n    try:\n        config_key = f\"ocr={ocr}-det={det}-old={old}-beta={beta}-gpu={use_gpu}-dev={device_id}\"\n\n        ocr_instance = get_ocr_instance(\n            config_key, ocr, det, old, beta, use_gpu, device_id, show_ad,\n            default_import_onnx_path, default_charsets_path\n        )\n\n        start_time = time.time()\n        ocr_instance.set_ranges(request.charset_range)\n\n        background_tasks.add_task(cleanup_inactive_instances)\n\n        return {\n            \"result\": \"字符范围设置成功\",\n            \"charset_range\": request.charset_range,\n            \"processing_time\": time.time() - start_time\n        }\n\n    except (DdddOcrInputError, InvalidImageError, TypeError) as exc:\n        raise HTTPException(status_code=400, detail=str(exc)) from exc\n    except Exception as e:\n        logger.error(f\"设置字符范围失败: {str(e)}\")\n        raise HTTPException(status_code=500, detail=f\"设置字符范围失败: {str(e)}\") from e\n\n# 获取当前配置信息\n@app.get(\"/config\")\nasync def get_current_config():\n    return {\n        \"default_config\": {\n            \"ocr\": default_ocr,\n            \"det\": default_det,\n            \"old\": default_old,\n            \"beta\": default_beta,\n            \"use_gpu\": default_use_gpu,\n            \"device_id\": default_device_id,\n            \"show_ad\": default_show_ad,\n            \"import_onnx_path\": default_import_onnx_path,\n            \"charsets_path\": default_charsets_path\n        },\n        \"active_instances\": len(ocr_instances),\n        \"environment\": {\n            \"python_version\": sys.version,\n            \"time\": time.strftime(\"%Y-%m-%d %H:%M:%S\")\n        }\n    }\n\n# 主函数，用于直接运行此文件时启动服务\ndef main():\n    # 获取环境变量或使用默认值\n    host = os.environ.get(\"DDDDOCR_HOST\", \"127.0.0.1\")\n    port = int(os.environ.get(\"DDDDOCR_PORT\", \"8000\"))\n    workers = int(os.environ.get(\"DDDDOCR_WORKERS\", \"1\"))\n    \n    # 启动服务\n    print(f\"启动DdddOcr API服务在 {host}:{port}，工作进程数: {workers}\")\n    uvicorn.run(\"ddddocr.api:app\", host=host, port=port, workers=workers)\n\nif __name__ == \"__main__\":\n    main() \n"
  },
  {
    "path": "ddddocr/api/mcp.py",
    "content": "# coding=utf-8\n\"\"\"\nMCP (Model Context Protocol) 协议支持\n使AI Agent能够调用ddddocr服务\n\"\"\"\n\nimport json\nimport base64\nfrom typing import Dict, Any, List\n\nfrom fastapi import APIRouter, HTTPException, Request\nfrom fastapi.responses import JSONResponse\n\nfrom .models import MCPRequest, MCPResponse, MCPCapabilities\n\n\nclass MCPHandler:\n    \"\"\"MCP协议处理器\"\"\"\n    \n    def __init__(self, service):\n        self.service = service\n        self.router = APIRouter()\n        self._setup_routes()\n    \n    def _setup_routes(self):\n        \"\"\"设置MCP路由\"\"\"\n        \n        @self.router.get(\"/capabilities\")\n        async def get_capabilities():\n            \"\"\"获取MCP能力声明\"\"\"\n            capabilities = MCPCapabilities(\n                tools=[\n                    {\n                        \"name\": \"ddddocr_initialize\",\n                        \"description\": \"初始化DDDDOCR服务，选择加载的模型类型\",\n                        \"inputSchema\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"ocr\": {\"type\": \"boolean\", \"description\": \"是否启用OCR功能\"},\n                                \"det\": {\"type\": \"boolean\", \"description\": \"是否启用目标检测功能\"},\n                                \"old\": {\"type\": \"boolean\", \"description\": \"是否使用旧版OCR模型\"},\n                                \"beta\": {\"type\": \"boolean\", \"description\": \"是否使用beta版OCR模型\"},\n                                \"use_gpu\": {\"type\": \"boolean\", \"description\": \"是否使用GPU\"}\n                            }\n                        }\n                    },\n                    {\n                        \"name\": \"ddddocr_ocr\",\n                        \"description\": \"执行OCR文字识别\",\n                        \"inputSchema\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"image\": {\"type\": \"string\", \"description\": \"图片数据（base64编码）\"},\n                                \"png_fix\": {\"type\": \"boolean\", \"description\": \"是否修复PNG透明背景问题\"},\n                                \"probability\": {\"type\": \"boolean\", \"description\": \"是否返回概率信息\"},\n                                \"color_filter_colors\": {\n                                    \"type\": \"array\", \n                                    \"items\": {\"type\": \"string\"},\n                                    \"description\": \"颜色过滤预设颜色列表，如 ['red', 'blue']\"\n                                },\n                                \"charset_range\": {\n                                    \"oneOf\": [\n                                        {\"type\": \"integer\"},\n                                        {\"type\": \"string\"}\n                                    ],\n                                    \"description\": \"字符集范围限制\"\n                                }\n                            },\n                            \"required\": [\"image\"]\n                        }\n                    },\n                    {\n                        \"name\": \"ddddocr_detection\",\n                        \"description\": \"执行目标检测\",\n                        \"inputSchema\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"image\": {\"type\": \"string\", \"description\": \"图片数据（base64编码）\"}\n                            },\n                            \"required\": [\"image\"]\n                        }\n                    },\n                    {\n                        \"name\": \"ddddocr_slide_match\",\n                        \"description\": \"滑块匹配算法\",\n                        \"inputSchema\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"target_image\": {\"type\": \"string\", \"description\": \"滑块图片（base64编码）\"},\n                                \"background_image\": {\"type\": \"string\", \"description\": \"背景图片（base64编码）\"},\n                                \"simple_target\": {\"type\": \"boolean\", \"description\": \"是否为简单滑块\"}\n                            },\n                            \"required\": [\"target_image\", \"background_image\"]\n                        }\n                    },\n                    {\n                        \"name\": \"ddddocr_slide_comparison\",\n                        \"description\": \"滑块比较算法\",\n                        \"inputSchema\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"target_image\": {\"type\": \"string\", \"description\": \"带坑位的图片（base64编码）\"},\n                                \"background_image\": {\"type\": \"string\", \"description\": \"完整背景图片（base64编码）\"}\n                            },\n                            \"required\": [\"target_image\", \"background_image\"]\n                        }\n                    },\n                    {\n                        \"name\": \"ddddocr_status\",\n                        \"description\": \"获取服务状态信息\",\n                        \"inputSchema\": {\n                            \"type\": \"object\",\n                            \"properties\": {}\n                        }\n                    }\n                ]\n            )\n            return capabilities\n        \n        @self.router.post(\"/call\")\n        async def call_tool(request: MCPRequest):\n            \"\"\"调用MCP工具\"\"\"\n            try:\n                method = request.method\n                params = request.params\n                \n                if method == \"ddddocr_initialize\":\n                    from .models import InitializeRequest\n                    init_request = InitializeRequest(**params)\n                    result = self.service.initialize(init_request)\n                    \n                elif method == \"ddddocr_ocr\":\n                    from .models import OCRRequest\n                    ocr_request = OCRRequest(**params)\n                    \n                    if not self.service.ocr_instance:\n                        raise HTTPException(status_code=400, detail=\"OCR功能未初始化\")\n                    \n                    # 解码base64图片\n                    image_data = base64.b64decode(ocr_request.image)\n                    \n                    # 设置字符集范围\n                    if ocr_request.charset_range is not None:\n                        self.service.ocr_instance.set_ranges(ocr_request.charset_range)\n                    \n                    # 执行OCR识别\n                    result = self.service.ocr_instance.classification(\n                        image_data,\n                        png_fix=ocr_request.png_fix,\n                        probability=ocr_request.probability,\n                        color_filter_colors=ocr_request.color_filter_colors,\n                        color_filter_custom_ranges=ocr_request.color_filter_custom_ranges\n                    )\n                    \n                elif method == \"ddddocr_detection\":\n                    from .models import DetectionRequest\n                    det_request = DetectionRequest(**params)\n                    \n                    if not self.service.det_instance:\n                        raise HTTPException(status_code=400, detail=\"目标检测功能未初始化\")\n                    \n                    # 解码base64图片\n                    image_data = base64.b64decode(det_request.image)\n                    \n                    # 执行目标检测\n                    result = self.service.det_instance.detection(image_data)\n                    \n                elif method == \"ddddocr_slide_match\":\n                    from .models import SlideMatchRequest\n                    slide_request = SlideMatchRequest(**params)\n                    \n                    if not self.service.slide_instance:\n                        raise HTTPException(status_code=500, detail=\"滑块功能未初始化\")\n                    \n                    # 解码base64图片\n                    target_data = base64.b64decode(slide_request.target_image)\n                    background_data = base64.b64decode(slide_request.background_image)\n                    \n                    # 执行滑块匹配\n                    result = self.service.slide_instance.slide_match(\n                        target_data, background_data, simple_target=slide_request.simple_target\n                    )\n                    \n                elif method == \"ddddocr_slide_comparison\":\n                    from .models import SlideComparisonRequest\n                    slide_request = SlideComparisonRequest(**params)\n                    \n                    if not self.service.slide_instance:\n                        raise HTTPException(status_code=500, detail=\"滑块功能未初始化\")\n                    \n                    # 解码base64图片\n                    target_data = base64.b64decode(slide_request.target_image)\n                    background_data = base64.b64decode(slide_request.background_image)\n                    \n                    # 执行滑块比较\n                    result = self.service.slide_instance.slide_comparison(target_data, background_data)\n                    \n                elif method == \"ddddocr_status\":\n                    result = self.service.get_status().dict()\n                    \n                else:\n                    raise HTTPException(status_code=400, detail=f\"不支持的方法: {method}\")\n                \n                return MCPResponse(result=result, id=request.id)\n                \n            except Exception as e:\n                return MCPResponse(\n                    error={\n                        \"code\": -1,\n                        \"message\": str(e),\n                        \"data\": None\n                    },\n                    id=request.id\n                )\n        \n        @self.router.get(\"/\")\n        async def mcp_info():\n            \"\"\"MCP协议信息\"\"\"\n            return {\n                \"protocol\": \"MCP\",\n                \"version\": \"1.6.1\",\n                \"description\": \"DDDDOCR MCP协议支持\",\n                \"endpoints\": {\n                    \"capabilities\": \"/mcp/capabilities\",\n                    \"call\": \"/mcp/call\"\n                }\n            }\n"
  },
  {
    "path": "ddddocr/api/models.py",
    "content": "# coding=utf-8\n\"\"\"\nAPI数据模型定义\n\"\"\"\n\nfrom typing import List, Optional, Union, Dict, Any\nfrom pydantic import BaseModel, Field\n\n\nclass InitializeRequest(BaseModel):\n    \"\"\"初始化请求模型\"\"\"\n    ocr: bool = Field(True, description=\"是否启用OCR功能\")\n    det: bool = Field(False, description=\"是否启用目标检测功能\")\n    old: bool = Field(False, description=\"是否使用旧版OCR模型\")\n    beta: bool = Field(False, description=\"是否使用beta版OCR模型\")\n    use_gpu: bool = Field(False, description=\"是否使用GPU\")\n    device_id: int = Field(0, description=\"GPU设备ID\")\n    import_onnx_path: str = Field(\"\", description=\"自定义ONNX模型路径\")\n    charsets_path: str = Field(\"\", description=\"自定义字符集路径\")\n\n\nclass SwitchModelRequest(BaseModel):\n    \"\"\"切换模型请求模型\"\"\"\n    model_type: str = Field(..., description=\"模型类型: 'ocr', 'det', 'ocr_old', 'ocr_beta'\")\n    use_gpu: bool = Field(False, description=\"是否使用GPU\")\n    device_id: int = Field(0, description=\"GPU设备ID\")\n\n\nclass ToggleFeatureRequest(BaseModel):\n    \"\"\"开启/关闭功能请求模型\"\"\"\n    feature: str = Field(..., description=\"功能名称: 'ocr', 'detection', 'color_filter'\")\n    enabled: bool = Field(..., description=\"是否启用\")\n\n\nclass OCRRequest(BaseModel):\n    \"\"\"OCR识别请求模型\"\"\"\n    image: str = Field(..., description=\"图片数据（base64编码）\")\n    png_fix: bool = Field(False, description=\"是否修复PNG透明背景问题\")\n    probability: bool = Field(False, description=\"是否返回概率信息\")\n    color_filter_colors: Optional[List[str]] = Field(None, description=\"颜色过滤预设颜色列表\")\n    color_filter_custom_ranges: Optional[List[List[List[int]]]] = Field(None, description=\"自定义HSV颜色范围\")\n    charset_range: Optional[Union[int, str]] = Field(None, description=\"字符集范围限制\")\n\n\nclass DetectionRequest(BaseModel):\n    \"\"\"目标检测请求模型\"\"\"\n    image: str = Field(..., description=\"图片数据（base64编码）\")\n\n\nclass SlideMatchRequest(BaseModel):\n    \"\"\"滑块匹配请求模型\"\"\"\n    target_image: str = Field(..., description=\"滑块图片（base64编码）\")\n    background_image: str = Field(..., description=\"背景图片（base64编码）\")\n    simple_target: bool = Field(False, description=\"是否为简单滑块\")\n\n\nclass SlideComparisonRequest(BaseModel):\n    \"\"\"滑块比较请求模型\"\"\"\n    target_image: str = Field(..., description=\"带坑位的图片（base64编码）\")\n    background_image: str = Field(..., description=\"完整背景图片（base64编码）\")\n\n\nclass APIResponse(BaseModel):\n    \"\"\"API响应基础模型\"\"\"\n    success: bool = Field(..., description=\"请求是否成功\")\n    message: str = Field(\"\", description=\"响应消息\")\n    data: Optional[Any] = Field(None, description=\"响应数据\")\n\n\nclass StatusResponse(BaseModel):\n    \"\"\"状态响应模型\"\"\"\n    service_status: str = Field(..., description=\"服务状态\")\n    loaded_models: List[str] = Field(..., description=\"已加载的模型列表\")\n    enabled_features: List[str] = Field(..., description=\"已启用的功能列表\")\n    version: str = Field(..., description=\"版本信息\")\n    uptime: float = Field(..., description=\"运行时间（秒）\")\n\n\nclass OCRResponse(BaseModel):\n    \"\"\"OCR识别响应模型\"\"\"\n    text: Optional[str] = Field(None, description=\"识别的文本\")\n    probability: Optional[Dict[str, Any]] = Field(None, description=\"概率信息\")\n\n\nclass DetectionResponse(BaseModel):\n    \"\"\"目标检测响应模型\"\"\"\n    bboxes: List[List[int]] = Field(..., description=\"检测到的边界框列表\")\n\n\nclass SlideResponse(BaseModel):\n    \"\"\"滑块响应模型\"\"\"\n    target: List[int] = Field(..., description=\"目标位置坐标\")\n    target_x: Optional[int] = Field(None, description=\"滑块X偏移\")\n    target_y: Optional[int] = Field(None, description=\"滑块Y偏移\")\n\n\n# MCP协议相关模型\nclass MCPRequest(BaseModel):\n    \"\"\"MCP请求模型\"\"\"\n    method: str = Field(..., description=\"方法名\")\n    params: Dict[str, Any] = Field({}, description=\"参数\")\n    id: Optional[Union[str, int]] = Field(None, description=\"请求ID\")\n\n\nclass MCPResponse(BaseModel):\n    \"\"\"MCP响应模型\"\"\"\n    result: Optional[Any] = Field(None, description=\"结果\")\n    error: Optional[Dict[str, Any]] = Field(None, description=\"错误信息\")\n    id: Optional[Union[str, int]] = Field(None, description=\"请求ID\")\n\n\nclass MCPCapabilities(BaseModel):\n    \"\"\"MCP能力声明模型\"\"\"\n    tools: List[Dict[str, Any]] = Field(..., description=\"可用工具列表\")\n    resources: List[Dict[str, Any]] = Field([], description=\"可用资源列表\")\n    prompts: List[Dict[str, Any]] = Field([], description=\"可用提示列表\")\n"
  },
  {
    "path": "ddddocr/api/routes.py",
    "content": "# coding=utf-8\n\"\"\"\nAPI路由定义\n\"\"\"\n\nimport base64\nimport time\nimport traceback\nfrom typing import Dict, Any\n\nfrom fastapi import FastAPI, HTTPException, Request\nfrom fastapi.responses import JSONResponse, HTMLResponse\n\nfrom .models import *\n\n\ndef create_routes(app: FastAPI, service):\n    \"\"\"创建API路由\"\"\"\n    \n    @app.get(\"/\", response_class=HTMLResponse)\n    async def root():\n        \"\"\"根路径，返回API文档链接\"\"\"\n        return \"\"\"\n        <html>\n            <head>\n                <title>DDDDOCR API</title>\n                <style>\n                    body { font-family: Arial, sans-serif; margin: 40px; }\n                    .container { max-width: 800px; margin: 0 auto; }\n                    .header { text-align: center; margin-bottom: 40px; }\n                    .links { display: flex; justify-content: center; gap: 20px; }\n                    .link { padding: 10px 20px; background: #007bff; color: white; text-decoration: none; border-radius: 5px; }\n                    .link:hover { background: #0056b3; }\n                </style>\n            </head>\n            <body>\n                <div class=\"container\">\n                    <div class=\"header\">\n                        <h1>DDDDOCR API 服务</h1>\n                        <p>带带弟弟OCR通用验证码识别API服务</p>\n                    </div>\n                    <div class=\"links\">\n                        <a href=\"/docs\" class=\"link\">Swagger UI 文档</a>\n                        <a href=\"/redoc\" class=\"link\">ReDoc 文档</a>\n                        <a href=\"/status\" class=\"link\">服务状态</a>\n                    </div>\n                </div>\n            </body>\n        </html>\n        \"\"\"\n    \n    @app.post(\"/initialize\", response_model=APIResponse)\n    async def initialize(request: InitializeRequest):\n        \"\"\"初始化并选择加载的模型类型\"\"\"\n        try:\n            result = service.initialize(request)\n            return APIResponse(success=True, message=result[\"message\"], data=result)\n        except Exception as e:\n            return APIResponse(success=False, message=str(e))\n    \n    @app.post(\"/switch-model\", response_model=APIResponse)\n    async def switch_model(request: SwitchModelRequest):\n        \"\"\"运行时切换模型配置\"\"\"\n        try:\n            result = service.switch_model(request)\n            return APIResponse(success=True, message=result[\"message\"], data=result)\n        except Exception as e:\n            return APIResponse(success=False, message=str(e))\n    \n    @app.post(\"/toggle-feature\", response_model=APIResponse)\n    async def toggle_feature(request: ToggleFeatureRequest):\n        \"\"\"开启/关闭特定功能\"\"\"\n        try:\n            result = service.toggle_feature(request)\n            return APIResponse(success=True, message=result[\"message\"], data=result)\n        except Exception as e:\n            return APIResponse(success=False, message=str(e))\n    \n    @app.post(\"/ocr\", response_model=APIResponse)\n    async def ocr_recognition(request: OCRRequest):\n        \"\"\"执行OCR识别\"\"\"\n        try:\n            if not service.ocr_instance:\n                raise HTTPException(status_code=400, detail=\"OCR功能未初始化，请先调用 /initialize 接口\")\n            \n            if \"ocr\" not in service.enabled_features:\n                raise HTTPException(status_code=400, detail=\"OCR功能已禁用\")\n            \n            # 解码base64图片\n            try:\n                image_data = base64.b64decode(request.image)\n            except Exception:\n                raise HTTPException(status_code=400, detail=\"图片base64解码失败\")\n            \n            # 设置字符集范围\n            if request.charset_range is not None:\n                service.ocr_instance.set_ranges(request.charset_range)\n            \n            # 执行OCR识别\n            result = service.ocr_instance.classification(\n                image_data,\n                png_fix=request.png_fix,\n                probability=request.probability,\n                color_filter_colors=request.color_filter_colors,\n                color_filter_custom_ranges=request.color_filter_custom_ranges\n            )\n            \n            if request.probability:\n                response_data = OCRResponse(text=None, probability=result)\n            else:\n                response_data = OCRResponse(text=result, probability=None)\n            \n            return APIResponse(success=True, message=\"OCR识别成功\", data=response_data.dict())\n            \n        except HTTPException:\n            raise\n        except Exception as e:\n            return APIResponse(success=False, message=f\"OCR识别失败: {str(e)}\")\n    \n    @app.post(\"/detect\", response_model=APIResponse)\n    async def object_detection(request: DetectionRequest):\n        \"\"\"执行目标检测\"\"\"\n        try:\n            if not service.det_instance:\n                raise HTTPException(status_code=400, detail=\"目标检测功能未初始化，请先调用 /initialize 接口\")\n            \n            if \"detection\" not in service.enabled_features:\n                raise HTTPException(status_code=400, detail=\"目标检测功能已禁用\")\n            \n            # 解码base64图片\n            try:\n                image_data = base64.b64decode(request.image)\n            except Exception:\n                raise HTTPException(status_code=400, detail=\"图片base64解码失败\")\n            \n            # 执行目标检测\n            bboxes = service.det_instance.detection(image_data)\n            \n            response_data = DetectionResponse(bboxes=bboxes)\n            return APIResponse(success=True, message=\"目标检测成功\", data=response_data.dict())\n            \n        except HTTPException:\n            raise\n        except Exception as e:\n            return APIResponse(success=False, message=f\"目标检测失败: {str(e)}\")\n    \n    @app.post(\"/slide-match\", response_model=APIResponse)\n    async def slide_match(request: SlideMatchRequest):\n        \"\"\"滑块匹配\"\"\"\n        try:\n            if not service.slide_instance:\n                raise HTTPException(status_code=500, detail=\"滑块功能未初始化\")\n            \n            # 解码base64图片\n            try:\n                target_data = base64.b64decode(request.target_image)\n                background_data = base64.b64decode(request.background_image)\n            except Exception:\n                raise HTTPException(status_code=400, detail=\"图片base64解码失败\")\n            \n            # 执行滑块匹配\n            result = service.slide_instance.slide_match(\n                target_data, background_data, simple_target=request.simple_target\n            )\n            \n            response_data = SlideResponse(**result)\n            return APIResponse(success=True, message=\"滑块匹配成功\", data=response_data.dict())\n            \n        except HTTPException:\n            raise\n        except Exception as e:\n            return APIResponse(success=False, message=f\"滑块匹配失败: {str(e)}\")\n    \n    @app.post(\"/slide-comparison\", response_model=APIResponse)\n    async def slide_comparison(request: SlideComparisonRequest):\n        \"\"\"滑块比较\"\"\"\n        try:\n            if not service.slide_instance:\n                raise HTTPException(status_code=500, detail=\"滑块功能未初始化\")\n            \n            # 解码base64图片\n            try:\n                target_data = base64.b64decode(request.target_image)\n                background_data = base64.b64decode(request.background_image)\n            except Exception:\n                raise HTTPException(status_code=400, detail=\"图片base64解码失败\")\n            \n            # 执行滑块比较\n            result = service.slide_instance.slide_comparison(target_data, background_data)\n            \n            response_data = SlideResponse(**result)\n            return APIResponse(success=True, message=\"滑块比较成功\", data=response_data.dict())\n            \n        except HTTPException:\n            raise\n        except Exception as e:\n            return APIResponse(success=False, message=f\"滑块比较失败: {str(e)}\")\n    \n    @app.get(\"/status\", response_model=StatusResponse)\n    async def get_status():\n        \"\"\"获取当前服务状态和已加载的模型信息\"\"\"\n        return service.get_status()\n    \n    @app.get(\"/health\")\n    async def health_check():\n        \"\"\"健康检查\"\"\"\n        return {\"status\": \"healthy\", \"timestamp\": time.time()}\n    \n    @app.exception_handler(Exception)\n    async def global_exception_handler(request: Request, exc: Exception):\n        \"\"\"全局异常处理\"\"\"\n        return JSONResponse(\n            status_code=500,\n            content={\n                \"success\": False,\n                \"message\": f\"服务器内部错误: {str(exc)}\",\n                \"detail\": traceback.format_exc() if app.debug else None\n            }\n        )\n"
  },
  {
    "path": "ddddocr/api/server.py",
    "content": "# coding=utf-8\n\"\"\"\nFastAPI服务器实现\n\"\"\"\n\nimport time\nimport base64\nimport traceback\nfrom typing import Optional, Dict, Any\nfrom contextlib import asynccontextmanager\n\nfrom fastapi import FastAPI, HTTPException, Request\nfrom fastapi.responses import JSONResponse, HTMLResponse\nfrom fastapi.middleware.cors import CORSMiddleware\nimport uvicorn\n\nfrom .models import *\nfrom .routes import create_routes\nfrom .mcp import MCPHandler\n\n\nclass DDDDOCRService:\n    \"\"\"DDDDOCR服务管理类\"\"\"\n    \n    def __init__(self):\n        self.ocr_instance = None\n        self.det_instance = None\n        self.slide_instance = None\n        self.enabled_features = set()\n        self.start_time = time.time()\n        self.version = \"1.6.1\"\n    \n    def initialize(self, config: InitializeRequest) -> Dict[str, Any]:\n        \"\"\"初始化服务\"\"\"\n        try:\n            # 动态导入ddddocr以避免循环导入\n            import ddddocr\n            \n            # 清理现有实例\n            self.ocr_instance = None\n            self.det_instance = None\n            self.slide_instance = None\n            self.enabled_features.clear()\n            \n            # 根据配置初始化实例\n            if config.ocr:\n                self.ocr_instance = ddddocr.DdddOcr(\n                    ocr=True, \n                    det=False,\n                    old=config.old,\n                    beta=config.beta,\n                    use_gpu=config.use_gpu,\n                    device_id=config.device_id,\n                    show_ad=False,\n                    import_onnx_path=config.import_onnx_path,\n                    charsets_path=config.charsets_path\n                )\n                self.enabled_features.add(\"ocr\")\n            \n            if config.det:\n                self.det_instance = ddddocr.DdddOcr(\n                    ocr=False,\n                    det=True,\n                    use_gpu=config.use_gpu,\n                    device_id=config.device_id,\n                    show_ad=False\n                )\n                self.enabled_features.add(\"detection\")\n            \n            # 滑块功能总是可用\n            self.slide_instance = ddddocr.DdddOcr(ocr=False, det=False, show_ad=False)\n            self.enabled_features.add(\"slide\")\n            \n            return {\n                \"loaded_models\": list(self.enabled_features),\n                \"message\": \"服务初始化成功\"\n            }\n            \n        except Exception as e:\n            raise HTTPException(status_code=500, detail=f\"初始化失败: {str(e)}\")\n    \n    def switch_model(self, config: SwitchModelRequest) -> Dict[str, Any]:\n        \"\"\"切换模型\"\"\"\n        try:\n            import ddddocr\n            \n            if config.model_type == \"ocr\":\n                self.ocr_instance = ddddocr.DdddOcr(\n                    ocr=True, det=False, old=False, beta=False,\n                    use_gpu=config.use_gpu, device_id=config.device_id, show_ad=False\n                )\n                self.enabled_features.add(\"ocr\")\n            elif config.model_type == \"ocr_old\":\n                self.ocr_instance = ddddocr.DdddOcr(\n                    ocr=True, det=False, old=True, beta=False,\n                    use_gpu=config.use_gpu, device_id=config.device_id, show_ad=False\n                )\n                self.enabled_features.add(\"ocr\")\n            elif config.model_type == \"ocr_beta\":\n                self.ocr_instance = ddddocr.DdddOcr(\n                    ocr=True, det=False, old=False, beta=True,\n                    use_gpu=config.use_gpu, device_id=config.device_id, show_ad=False\n                )\n                self.enabled_features.add(\"ocr\")\n            elif config.model_type == \"det\":\n                self.det_instance = ddddocr.DdddOcr(\n                    ocr=False, det=True,\n                    use_gpu=config.use_gpu, device_id=config.device_id, show_ad=False\n                )\n                self.enabled_features.add(\"detection\")\n            else:\n                raise ValueError(f\"不支持的模型类型: {config.model_type}\")\n            \n            return {\n                \"model_type\": config.model_type,\n                \"message\": f\"模型 {config.model_type} 切换成功\"\n            }\n            \n        except Exception as e:\n            raise HTTPException(status_code=500, detail=f\"模型切换失败: {str(e)}\")\n    \n    def toggle_feature(self, config: ToggleFeatureRequest) -> Dict[str, Any]:\n        \"\"\"开启/关闭功能\"\"\"\n        if config.enabled:\n            self.enabled_features.add(config.feature)\n            message = f\"功能 {config.feature} 已启用\"\n        else:\n            self.enabled_features.discard(config.feature)\n            message = f\"功能 {config.feature} 已禁用\"\n        \n        return {\n            \"feature\": config.feature,\n            \"enabled\": config.enabled,\n            \"message\": message\n        }\n    \n    def get_status(self) -> StatusResponse:\n        \"\"\"获取服务状态\"\"\"\n        loaded_models = []\n        if self.ocr_instance:\n            loaded_models.append(\"ocr\")\n        if self.det_instance:\n            loaded_models.append(\"detection\")\n        if self.slide_instance:\n            loaded_models.append(\"slide\")\n        \n        return StatusResponse(\n            service_status=\"running\",\n            loaded_models=loaded_models,\n            enabled_features=list(self.enabled_features),\n            version=self.version,\n            uptime=time.time() - self.start_time\n        )\n\n\n# 全局服务实例\nservice = DDDDOCRService()\n\n\n@asynccontextmanager\nasync def lifespan(app: FastAPI):\n    \"\"\"应用生命周期管理\"\"\"\n    # 启动时初始化\n    print(\"DDDDOCR API服务启动中...\")\n    yield\n    # 关闭时清理\n    print(\"DDDDOCR API服务关闭中...\")\n\n\ndef create_app() -> FastAPI:\n    \"\"\"创建FastAPI应用\"\"\"\n    app = FastAPI(\n        title=\"DDDDOCR API\",\n        description=\"带带弟弟OCR通用验证码识别API服务\",\n        version=\"1.6.1\",\n        docs_url=\"/docs\",\n        redoc_url=\"/redoc\",\n        lifespan=lifespan\n    )\n    \n    # 添加CORS中间件\n    app.add_middleware(\n        CORSMiddleware,\n        allow_origins=[\"*\"],\n        allow_credentials=True,\n        allow_methods=[\"*\"],\n        allow_headers=[\"*\"],\n    )\n    \n    # 添加路由\n    create_routes(app, service)\n    \n    # 添加MCP处理器\n    mcp_handler = MCPHandler(service)\n    app.include_router(mcp_handler.router, prefix=\"/mcp\", tags=[\"MCP\"])\n    \n    return app\n\n\ndef run_server(host: str = \"0.0.0.0\", port: int = 8000, **kwargs):\n    \"\"\"运行服务器\"\"\"\n    app = create_app()\n    print(f\"DDDDOCR API服务启动在 http://{host}:{port}\")\n    print(f\"API文档地址: http://{host}:{port}/docs\")\n    print(f\"MCP协议地址: http://{host}:{port}/mcp\")\n    uvicorn.run(app, host=host, port=port, **kwargs)\n"
  },
  {
    "path": "ddddocr/charsets.py",
    "content": "# coding=utf-8\nCHARSET_OLD = ['',\n '掀',\n '袜',\n '顧',\n '徕',\n '榱',\n '荪',\n '浡',\n '其',\n '炎',\n '玉',\n '恩',\n '劣',\n '徽',\n '廉',\n '桂',\n '拂',\n '鳊',\n '撤',\n '赏',\n '哮',\n '侄',\n '蓮',\n 'И',\n '进',\n '饭',\n '饱',\n '优',\n '楸',\n '礻',\n '蜉',\n '營',\n '伙',\n '杌',\n '修',\n '榜',\n '准',\n '铒',\n '戏',\n '赭',\n '襟',\n '彘',\n '彩',\n '雁',\n '闽',\n '坎',\n '聂',\n '氡',\n '辜',\n '苁',\n '潆',\n '摁',\n '月',\n '稇',\n '而',\n '醴',\n '簉',\n '卑',\n '妖',\n '埽',\n '嘡',\n '醛',\n '見',\n '煎',\n '汪',\n '秽',\n '迄',\n '噭',\n '焉',\n '钌',\n '瑕',\n '玻',\n '仙',\n '蹑',\n '钀',\n '翦',\n '丰',\n '矗',\n '2',\n '胚',\n '镊',\n '镡',\n '鍊',\n '帖',\n '僰',\n '淀',\n '吒',\n '冲',\n '挡',\n '粼',\n '螈',\n '缵',\n '孺',\n '侦',\n '曷',\n '渐',\n '敷',\n '投',\n '宸',\n '祉',\n '柳',\n '尖',\n '梃',\n '淘',\n '臁',\n '躇',\n '撖',\n '惭',\n '狄',\n '聢',\n '官',\n '狴',\n '诬',\n '骄',\n '跻',\n '場',\n '姻',\n '钎',\n '藥',\n '綉',\n '驾',\n '舻',\n '黢',\n '鲦',\n '蜣',\n '渖',\n '绹',\n '佰',\n '怜',\n '三',\n '痪',\n '眍',\n '养',\n '角',\n '薜',\n '濑',\n '劳',\n '戟',\n '傎',\n '纫',\n '徉',\n '收',\n '稍',\n '虫',\n '螋',\n '鬲',\n '捌',\n '陡',\n '蓟',\n '邳',\n '蹢',\n '涉',\n '煋',\n '端',\n '懷',\n '椤',\n '埶',\n '廊',\n '免',\n '秫',\n '猢',\n '睐',\n '臺',\n '擀',\n '布',\n '麃',\n '彗',\n '汊',\n '芄',\n '遣',\n '胙',\n '另',\n '癯',\n '徭',\n '疢',\n '茆',\n '忡',\n '＇',\n '烃',\n '笕',\n '薤',\n '肆',\n '熛',\n '過',\n '盖',\n '跷',\n '呷',\n '痿',\n '沖',\n '魍',\n '讣',\n '庤',\n '弑',\n '诩',\n '庵',\n '履',\n '暮',\n '始',\n '滟',\n '矅',\n '蛹',\n '鸿',\n '啃',\n '铋',\n '沿',\n '鐾',\n '酆',\n '團',\n '恙',\n '閥',\n '聒',\n '讵',\n '颠',\n '沾',\n '堅',\n '踣',\n '陴',\n '覃',\n '滙',\n '浐',\n '钇',\n '脆',\n '炙',\n '亮',\n '觌',\n '産',\n '汩',\n '鸭',\n '斄',\n '堆',\n '掭',\n '揞',\n '鹂',\n '郫',\n '瘅',\n '蚂',\n '揩',\n '学',\n '组',\n '浸',\n '腙',\n '耀',\n '嗛',\n '局',\n '蠓',\n '肠',\n '昏',\n 'Ｉ',\n '岑',\n '镯',\n '憧',\n '油',\n '泸',\n '鸟',\n '潇',\n '蕻',\n '褒',\n '瞧',\n '旸',\n '昭',\n '庐',\n '鞒',\n '内',\n '痈',\n '己',\n '曙',\n '怠',\n '锟',\n '晞',\n '耢',\n '鲢',\n '醦',\n '糕',\n '療',\n '寇',\n '梵',\n '黾',\n '呻',\n '苒',\n 'ü',\n '校',\n '嘏',\n '昃',\n 'Ⅰ',\n '蕰',\n '凖',\n '嵛',\n '裨',\n '筏',\n '匜',\n '咋',\n '乏',\n '婵',\n '镂',\n '珰',\n '感',\n '蔗',\n '蚵',\n '庞',\n '弢',\n '槟',\n '口',\n '漉',\n '﹒',\n '咂',\n '俩',\n '增',\n '硐',\n '襙',\n '绉',\n '卿',\n '距',\n '璱',\n '猖',\n '铚',\n '郚',\n '嬖',\n '缒',\n '阃',\n '扞',\n 'Ｖ',\n '望',\n '最',\n '浔',\n '骜',\n '赃',\n '闻',\n '砍',\n '奸',\n '灶',\n '以',\n '获',\n '鳎',\n '浦',\n '罐',\n '孓',\n '纭',\n '瘀',\n '普',\n '氰',\n '塮',\n '症',\n '顷',\n '们',\n '螓',\n '蛸',\n '鵰',\n '册',\n '美',\n '萨',\n '沘',\n '犰',\n '嫌',\n '名',\n '）',\n '懦',\n '滇',\n 'F',\n '垡',\n '声',\n '毅',\n '隅',\n '鲎',\n '煨',\n '萦',\n '宜',\n '唇',\n '鯨',\n '邛',\n '杲',\n '赜',\n '长',\n '魂',\n '桠',\n '锇',\n '搓',\n '俘',\n '仰',\n '膘',\n '宦',\n '歹',\n '遁',\n '猃',\n '噉',\n '幂',\n '糜',\n '嗤',\n '周',\n '剂',\n '曦',\n '暧',\n '焖',\n '髻',\n '釐',\n '泰',\n '窟',\n '檎',\n '旧',\n '犀',\n '镄',\n '百',\n '取',\n '岍',\n '逗',\n '叽',\n '呃',\n '鲪',\n '萬',\n '陈',\n '7',\n '習',\n '区',\n '逄',\n '宏',\n '罡',\n '漭',\n '盗',\n '郿',\n '般',\n '谢',\n '倪',\n '纵',\n '婶',\n '砧',\n '揖',\n '扪',\n '濒',\n '愤',\n '茓',\n '浞',\n '子',\n '揄',\n '旌',\n '趄',\n '樊',\n '醑',\n '遄',\n '婚',\n '汶',\n '矩',\n '裈',\n '弊',\n '呱',\n '铳',\n '勿',\n '蚴',\n '忿',\n '褓',\n '缚',\n '酱',\n '璞',\n '庆',\n '除',\n '礌',\n '珩',\n '榨',\n '鼢',\n '逞',\n '容',\n '圯',\n '猛',\n '陌',\n '-',\n '嚯',\n '镘',\n '鱾',\n '睚',\n '猬',\n '杜',\n '鳓',\n '燈',\n '計',\n '咣',\n '炜',\n '睁',\n '箱',\n '邮',\n '略',\n '馇',\n '逐',\n '雀',\n '僬',\n '髯',\n '奖',\n '俱',\n '－',\n '绗',\n '犏',\n '辱',\n '忑',\n '挽',\n '康',\n '蝼',\n '栏',\n '模',\n '辒',\n '•',\n '儋',\n '罱',\n '墈',\n '会',\n '秀',\n '栈',\n '缔',\n '醜',\n '蚣',\n '阮',\n '鼗',\n '眼',\n '湧',\n '沁',\n '夥',\n '毕',\n '媚',\n '瘳',\n '痣',\n '搴',\n '闿',\n '遍',\n '焰',\n '岣',\n '舱',\n '埌',\n '麿',\n '嘿',\n '靽',\n '体',\n '想',\n '霓',\n '钛',\n '摽',\n '苑',\n '芳',\n '技',\n '綮',\n '钅',\n '燠',\n '栾',\n '年',\n '悱',\n '腹',\n '员',\n '呕',\n '闇',\n '嗫',\n '檩',\n '荒',\n '溱',\n '舨',\n '峙',\n '卒',\n '洑',\n '预',\n '弯',\n '蔷',\n '叵',\n '锯',\n '慈',\n '牧',\n '患',\n '贇',\n '偷',\n '鲜',\n '锓',\n '躔',\n '嚬',\n '烈',\n '娌',\n '嘲',\n '详',\n '麺',\n '舒',\n '厨',\n '徵',\n '葹',\n '只',\n '篦',\n '鹀',\n '剕',\n '驳',\n '聍',\n '黧',\n '砾',\n '暅',\n '褫',\n '呈',\n '森',\n '结',\n '龛',\n '钲',\n '轧',\n '扔',\n '蕹',\n '赵',\n '涒',\n '冯',\n '渲',\n '缭',\n '坚',\n '趼',\n '鲑',\n '倫',\n '门',\n '班',\n '垚',\n '鞍',\n '菘',\n '畐',\n '僇',\n '侉',\n '禢',\n '轳',\n '饦',\n '兽',\n '呯',\n '捂',\n '樨',\n '卧',\n '栝',\n '豭',\n '冶',\n '鉰',\n '申',\n '蜈',\n '印',\n '缨',\n '镫',\n '蕾',\n '圜',\n '扑',\n '娉',\n '烦',\n '缳',\n '广',\n '峄',\n '獒',\n '铔',\n '奁',\n '醚',\n '倥',\n '蹇',\n '阚',\n '镆',\n '煺',\n '德',\n '颉',\n '嗅',\n '绷',\n '蒯',\n '祺',\n '崧',\n '往',\n '枨',\n '涡',\n '鲲',\n '瓅',\n '岌',\n '肘',\n '飔',\n '缘',\n '千',\n '棱',\n '溶',\n '窣',\n '篼',\n '代',\n '捡',\n '送',\n '咡',\n '术',\n '滑',\n '茜',\n '晾',\n '挤',\n '曳',\n '糈',\n 'Ｇ',\n '翊',\n '殴',\n '妹',\n '溥',\n '璆',\n '烩',\n '拙',\n '襄',\n '几',\n '嘴',\n 'D',\n '驮',\n '淙',\n '蹐',\n '合',\n '環',\n '剑',\n '怪',\n '褂',\n '畑',\n '燏',\n '订',\n '珪',\n '≥',\n '瘟',\n '耷',\n '槑',\n '衷',\n '猕',\n '迁',\n '霎',\n '槜',\n '﹖',\n '鋈',\n '苹',\n '嫣',\n '祜',\n '李',\n '鄒',\n '噢',\n '萄',\n '仝',\n '纨',\n '直',\n '悛',\n '拣',\n '远',\n '诏',\n '圧',\n '躬',\n '蝟',\n '總',\n '眆',\n '筻',\n '硇',\n '鳁',\n '眠',\n '钆',\n '泞',\n '猱',\n '宾',\n '酞',\n '募',\n '螳',\n '腴',\n '念',\n '宠',\n '唯',\n '怊',\n '勃',\n 'M',\n '兿',\n '蟑',\n '妁',\n '掸',\n '拌',\n '铸',\n '讼',\n '诟',\n '锺',\n 'Ω',\n '竟',\n '羚',\n '剽',\n 'C',\n '苦',\n '煳',\n '罢',\n '跨',\n '～',\n '豸',\n '±',\n '俬',\n '捺',\n '彦',\n '钣',\n '鋆',\n '用',\n '缤',\n '搁',\n '徼',\n '谦',\n '筘',\n '嗨',\n '扮',\n '旇',\n '折',\n '咯',\n '昆',\n '叟',\n '垂',\n '箐',\n '捻',\n '燕',\n '島',\n '瞀',\n '鮮',\n '屡',\n '點',\n '瘭',\n '恚',\n '旚',\n '丟',\n '捽',\n '菁',\n '瀑',\n '炕',\n '蹩',\n '芒',\n 'r',\n '是',\n '媾',\n '鹝',\n '囵',\n '萤',\n '拷',\n '频',\n '埴',\n '课',\n '癍',\n '袱',\n '螯',\n '谘',\n '榛',\n 'Y',\n '缣',\n '裔',\n '憩',\n '相',\n '觀',\n '晗',\n '坳',\n '炔',\n '勉',\n '汆',\n '钡',\n '舐',\n '衫',\n '疫',\n '鲙',\n '蘩',\n '穈',\n '殁',\n '九',\n '泻',\n '咤',\n '構',\n '谆',\n '陕',\n '装',\n '蔡',\n '画',\n '介',\n '苋',\n '務',\n '敝',\n '俟',\n '帇',\n '鸺',\n '贸',\n '茗',\n '肃',\n '滪',\n '输',\n '瘗',\n '菽',\n '饹',\n '诉',\n '遐',\n '浑',\n '扎',\n '卟',\n '铀',\n '邗',\n '觋',\n '嘎',\n '塑',\n '潏',\n '金',\n '姘',\n '潋',\n '逵',\n '鲻',\n '逯',\n '炮',\n '甄',\n '髡',\n '剩',\n '嗬',\n '芴',\n '屋',\n '改',\n '骣',\n '芪',\n '邠',\n '痋',\n '珑',\n '帆',\n '狙',\n '八',\n '奔',\n '族',\n '轵',\n '氖',\n '雕',\n '痧',\n '眊',\n '胛',\n '酉',\n '鲼',\n '砣',\n '猸',\n '餮',\n '郇',\n '沫',\n '跖',\n '蝉',\n '屑',\n '辘',\n '閣',\n '涑',\n '邡',\n '篃',\n '交',\n '笼',\n '颇',\n '贻',\n '魄',\n '黡',\n '劂',\n '糠',\n '炅',\n '帨',\n '苍',\n '瓴',\n '粤',\n '莎',\n '朿',\n '埔',\n '绸',\n '齁',\n '鱿',\n '惨',\n '腢',\n '郡',\n '棠',\n '猫',\n '脑',\n '風',\n '蚱',\n '捐',\n '嵌',\n '胱',\n '馗',\n '竽',\n '泥',\n '辍',\n '怖',\n '雾',\n '絮',\n '淼',\n '筝',\n '碲',\n '悼',\n '龀',\n 'の',\n '珥',\n '忐',\n '溲',\n '昕',\n '荔',\n '掂',\n '瘦',\n '僭',\n '蔌',\n '抺',\n '椅',\n '誉',\n '扯',\n '僜',\n '停',\n '衉',\n '汇',\n '赔',\n '眄',\n '呙',\n '咙',\n '剿',\n '次',\n '蛟',\n '嗓',\n '』',\n '汕',\n '詈',\n '帘',\n '踧',\n '姁',\n '血',\n '堪',\n '喜',\n '滩',\n '璎',\n '胄',\n '俨',\n '眚',\n '凌',\n '拽',\n '滔',\n '⑿',\n '嬃',\n '―',\n '汐',\n '潭',\n '阡',\n '呓',\n '婷',\n '执',\n '妊',\n '恂',\n '妥',\n '鳘',\n '蔫',\n '设',\n '睒',\n '笪',\n '謇',\n '鞋',\n '谍',\n '黯',\n '虍',\n '馬',\n '蚧',\n '骑',\n '峤',\n '舾',\n '儀',\n '駡',\n 'β',\n '蓑',\n '柏',\n '痒',\n '蒇',\n '痕',\n '妍',\n '熠',\n '僻',\n '爬',\n '迭',\n '畫',\n '绰',\n '湯',\n '凭',\n '菼',\n '懈',\n '顒',\n '午',\n '箪',\n '糙',\n '址',\n '钼',\n '堵',\n '佘',\n '侍',\n '卤',\n '(',\n '榚',\n '泽',\n '溘',\n '蟹',\n 'b',\n '燁',\n '颂',\n '菠',\n '榉',\n '鲡',\n '埸',\n '荛',\n '歘',\n '断',\n '邸',\n '贡',\n '礞',\n '蔼',\n '脸',\n '爪',\n '帜',\n '翡',\n '仟',\n '皎',\n '辆',\n '滫',\n '昔',\n '™',\n '柬',\n '弓',\n '遇',\n '杪',\n '侨',\n '娓',\n '镪',\n '觑',\n '一',\n '踌',\n '牟',\n '褡',\n '厩',\n '晌',\n '每',\n '娘',\n '渤',\n 'c',\n '咫',\n '成',\n '颏',\n '孩',\n '鼓',\n '瞌',\n '槁',\n '捒',\n '阉',\n '伉',\n '癣',\n '胞',\n '鲟',\n '瓤',\n '杅',\n '紡',\n '喂',\n '掠',\n '镜',\n '镧',\n '侞',\n '赦',\n '貝',\n '丕',\n '臧',\n 'Ｌ',\n '池',\n '彷',\n '棓',\n '锽',\n '渊',\n '食',\n '饨',\n '堡',\n '玥',\n '氣',\n '讽',\n '敬',\n '闺',\n '帡',\n '携',\n '哫',\n '珈',\n '魆',\n '哄',\n '旁',\n '喻',\n '泄',\n '畎',\n '郁',\n '唅',\n '葜',\n '繪',\n '飐',\n '谶',\n '聆',\n '斝',\n '谥',\n '辉',\n '髅',\n '進',\n '吧',\n '蹀',\n '铛',\n '笛',\n '睥',\n '楼',\n '凝',\n '況',\n '鸷',\n '苠',\n '饺',\n '沙',\n '缴',\n '块',\n '梢',\n '慝',\n '珐',\n '鄏',\n '霰',\n '迸',\n '氆',\n '趵',\n '棣',\n '鳔',\n '祆',\n '☆',\n '苯',\n '恁',\n '螨',\n '庭',\n '缠',\n '槠',\n '津',\n '髋',\n '诔',\n '葶',\n '蜾',\n '坻',\n '蒹',\n '摔',\n '向',\n '垩',\n '蹭',\n '淇',\n '筛',\n '滬',\n '玡',\n '铺',\n '逼',\n '劵',\n '绲',\n '团',\n '鳀',\n '常',\n '玖',\n '擢',\n '株',\n '铵',\n '樽',\n '弭',\n '醇',\n '糨',\n '璈',\n '曩',\n '潔',\n '祘',\n '磨',\n '希',\n '鲅',\n '擂',\n '谗',\n '唳',\n '欷',\n '欧',\n '绋',\n '庙',\n '琬',\n '稳',\n '糊',\n '拥',\n '霪',\n '浼',\n '翎',\n '俜',\n '摸',\n '筚',\n '巯',\n '墼',\n '苫',\n '缩',\n '镚',\n '婪',\n '圹',\n '咚',\n '儿',\n '蒽',\n '婆',\n '鲐',\n '雹',\n '霞',\n '嶪',\n '濠',\n '琉',\n '澌',\n '媢',\n '禤',\n '摺',\n '掏',\n '矢',\n '艄',\n '围',\n '呸',\n '寺',\n '拤',\n '氐',\n '柝',\n '跎',\n '僖',\n '挢',\n '茨',\n '涮',\n '缫',\n '撸',\n '荨',\n '嶷',\n '廋',\n '魋',\n '付',\n '喋',\n '蜗',\n '邙',\n '棹',\n '璪',\n '倡',\n '鞭',\n '游',\n '錦',\n '眬',\n '抒',\n '眈',\n '培',\n '夏',\n '黔',\n '獐',\n '皋',\n '戛',\n '鲀',\n '垒',\n '耽',\n '纤',\n '漩',\n '铈',\n '握',\n '窝',\n '芋',\n '濞',\n '截',\n '零',\n '敖',\n '眸',\n '怦',\n '噎',\n '簋',\n '掳',\n '妣',\n '湃',\n '璠',\n '殄',\n '觞',\n '桅',\n '笋',\n '鲞',\n '踯',\n '傀',\n '犨',\n '抵',\n '疰',\n '暌',\n '耖',\n '供',\n '枳',\n '怂',\n '娶',\n '鸩',\n '捣',\n '庸',\n '逡',\n '懋',\n '颃',\n '長',\n '鼫',\n '姮',\n '蹈',\n '耵',\n '乂',\n '骐',\n '殇',\n '膏',\n '仳',\n '冥',\n '梭',\n '洵',\n '碣',\n '昝',\n '仉',\n '軒',\n '隍',\n '更',\n 'な',\n '嵕',\n '拜',\n '粑',\n '鲴',\n '吇',\n '秃',\n '尕',\n '魃',\n '狨',\n '臛',\n '蟥',\n '胨',\n '注',\n '谁',\n '张',\n '才',\n '尸',\n '派',\n '矮',\n '洳',\n '舟',\n '溺',\n '锴',\n '寓',\n '籴',\n '夕',\n '叭',\n '荠',\n '澼',\n '劃',\n '久',\n '私',\n '炉',\n '娟',\n '麤',\n '稂',\n '河',\n '纴',\n '夺',\n '亏',\n '焙',\n '。',\n '塗',\n '蜩',\n '栌',\n '渡',\n '薰',\n '崋',\n '揿',\n '漤',\n '啾',\n '郏',\n '舣',\n '卉',\n '爱',\n '牚',\n '撵',\n '钺',\n '再',\n '企',\n '笺',\n '疾',\n '承',\n '俾',\n '瞈',\n '邰',\n '汾',\n '瘛',\n '檫',\n '蒎',\n '觅',\n '绀',\n '掎',\n 'Ｕ',\n '赓',\n '匳',\n '聘',\n '蛤',\n '跤',\n '嗜',\n '洼',\n '歔',\n '弟',\n '飕',\n '莼',\n '嫉',\n '那',\n '滈',\n '践',\n '僦',\n '偎',\n '扢',\n '绚',\n '乕',\n '旳',\n '招',\n '饯',\n '®',\n '攸',\n '鞁',\n '囫',\n '铨',\n '陒',\n '鷄',\n '畀',\n '韨',\n '經',\n '纾',\n '萸',\n '肴',\n '→',\n '宗',\n '迳',\n '鳞',\n '亚',\n '搂',\n '喀',\n '狮',\n '坦',\n '瞥',\n '采',\n '姝',\n '钳',\n '□',\n '剌',\n '維',\n '葸',\n '鼩',\n '公',\n '刀',\n '沩',\n '喔',\n '泺',\n '哉',\n '徨',\n '篝',\n '掊',\n '沕',\n '运',\n '偆',\n '浒',\n '语',\n '乇',\n '仪',\n '萝',\n '疍',\n '踽',\n '碡',\n '熰',\n '荞',\n '嚓',\n '天',\n '饰',\n '泵',\n '械',\n '孑',\n '蛰',\n '荟',\n '源',\n '峡',\n '矜',\n '睬',\n '噬',\n '腆',\n '婉',\n '‘',\n '等',\n '誓',\n '辀',\n '岖',\n '琖',\n '碜',\n '霍',\n '怼',\n '唛',\n '弈',\n '淑',\n '疆',\n '晴',\n '镴',\n '鸡',\n '埚',\n '焕',\n '芦',\n '唻',\n '踅',\n '吴',\n '殡',\n '唏',\n '吨',\n '寡',\n '鹉',\n '絲',\n '坉',\n '會',\n '埭',\n 'Ⅲ',\n '捏',\n '墅',\n '卓',\n '叙',\n '徇',\n '柜',\n '各',\n '荭',\n 'J',\n '恝',\n '囐',\n '蓉',\n '犋',\n '叡',\n '莺',\n '颌',\n '蒸',\n '饸',\n '疋',\n '玊',\n '兢',\n '鱽',\n '藍',\n '杳',\n '辂',\n '獘',\n '拔',\n '侪',\n '湍',\n '膂',\n '渔',\n '瘊',\n '雉',\n '稁',\n '職',\n '僤',\n '鄳',\n '祁',\n '稱',\n 'I',\n '裴',\n '锉',\n '曹',\n '鲶',\n '挨',\n '哑',\n '鷪',\n '鏠',\n '煞',\n '师',\n '蛲',\n '牁',\n '琅',\n '告',\n '媒',\n '祭',\n '确',\n '荚',\n '亰',\n '蝗',\n '阗',\n '歩',\n '疲',\n 'f',\n '唣',\n '愛',\n '郾',\n '棍',\n '山',\n '狲',\n '纽',\n '蚡',\n '栂',\n '馓',\n '诊',\n '猴',\n '喤',\n '来',\n '继',\n '桎',\n '嬛',\n '骞',\n '邴',\n '暄',\n '贼',\n '昴',\n '廿',\n '克',\n '耔',\n '彤',\n '鹭',\n '葓',\n '骢',\n '龁',\n '鏡',\n '瀚',\n '赅',\n '韩',\n '譄',\n '榷',\n '殚',\n '膛',\n '须',\n '、',\n '砖',\n '唶',\n '番',\n '蛘',\n '畴',\n '铠',\n '亢',\n '氓',\n '铰',\n '炻',\n '筫',\n '迢',\n '兰',\n '玺',\n '砻',\n '积',\n '莜',\n '吸',\n '监',\n '膦',\n '迪',\n '迷',\n '冷',\n '哀',\n '贳',\n '瞄',\n '器',\n '鹡',\n '惺',\n '徐',\n '酢',\n '寒',\n 'Ⓡ',\n '倾',\n '飞',\n '楽',\n '涢',\n '队',\n '舆',\n '赤',\n '璩',\n '戳',\n '殳',\n '掮',\n '舴',\n '蜷',\n '宄',\n '拴',\n '癌',\n '舛',\n '婀',\n '抟',\n '靡',\n '骍',\n '揸',\n '思',\n '慧',\n '平',\n '橘',\n '臭',\n '硖',\n '卬',\n '畈',\n '兠',\n '茸',\n '脂',\n '魚',\n '晩',\n '御',\n '龋',\n '涣',\n '罨',\n '爍',\n '糌',\n '汧',\n '缐',\n '贽',\n '要',\n '祀',\n '鲊',\n '爼',\n '獯',\n '瀣',\n '棋',\n '肈',\n '佣',\n '娣',\n '柩',\n '枸',\n '偃',\n 'v',\n '唷',\n '劍',\n '榴',\n '槐',\n '漫',\n '洽',\n '蒡',\n '籼',\n '魔',\n '峋',\n '第',\n '歙',\n '萧',\n '谮',\n '埯',\n '撮',\n '马',\n '绡',\n '裘',\n '鹋',\n '蓬',\n '显',\n '噶',\n '倒',\n '镳',\n '艽',\n '窬',\n '拳',\n '樯',\n '跋',\n '詹',\n '钥',\n '心',\n '嶽',\n '嚋',\n '戎',\n '吕',\n '涂',\n '悃',\n '麦',\n '骋',\n '推',\n '箩',\n '硚',\n '匆',\n '村',\n '五',\n '杨',\n '凑',\n '鞫',\n '镰',\n '伥',\n '诒',\n '纣',\n '崃',\n '鸻',\n '翰',\n '辌',\n '廛',\n '證',\n '舢',\n '盼',\n '腿',\n '圳',\n '贱',\n '皿',\n '隆',\n '屈',\n '龏',\n '瓒',\n '顏',\n '↓',\n '赈',\n '煙',\n '窍',\n '韧',\n '壁',\n '莰',\n '箬',\n '蹋',\n '褰',\n '峥',\n '悚',\n '坜',\n '环',\n '回',\n '疼',\n '渍',\n '蝄',\n '东',\n '臂',\n '坩',\n '走',\n '痍',\n '或',\n '蜀',\n '熳',\n '蜻',\n '佐',\n '懿',\n '嚅',\n '紗',\n '螭',\n '忖',\n '顶',\n '狡',\n '吲',\n '洣',\n '帛',\n '呶',\n '柞',\n '柫',\n '酿',\n '粥',\n '琢',\n '呵',\n '踝',\n '榀',\n '呲',\n '價',\n '鼋',\n '欺',\n '此',\n '背',\n '猎',\n '昱',\n '濡',\n '稚',\n '欠',\n '暇',\n '茬',\n '牙',\n '迹',\n '尼',\n '氛',\n '膠',\n '缯',\n '娼',\n '骚',\n '姒',\n '鬟',\n '霁',\n '鲔',\n '者',\n '驰',\n '倩',\n '馉',\n '工',\n '芬',\n '烙',\n '卦',\n 'Ｃ',\n '裂',\n '垲',\n '摆',\n '珮',\n '缏',\n '杞',\n '绘',\n '司',\n '如',\n '姞',\n '荆',\n '挖',\n '跗',\n '伍',\n '氚',\n '钘',\n '郢',\n '轱',\n '篆',\n '吭',\n '夡',\n '鹫',\n '讷',\n '轺',\n '！',\n '匈',\n '待',\n '聱',\n '黏',\n '海',\n '蹶',\n '趋',\n '鎮',\n '觊',\n '江',\n '咸',\n '富',\n '艴',\n '稗',\n '钜',\n '搏',\n '壶',\n '鲮',\n '薪',\n '猞',\n '轰',\n '踪',\n '赣',\n '循',\n '序',\n '噻',\n '若',\n '裾',\n '许',\n '癞',\n '吓',\n '判',\n '踔',\n '查',\n '蚀',\n '［',\n '樓',\n '坌',\n '岳',\n '榄',\n '役',\n '倜',\n '⒂',\n '旭',\n '溆',\n '惯',\n '咀',\n '跫',\n '选',\n '囱',\n '污',\n '镶',\n '⒁',\n '淠',\n '氮',\n '酯',\n '寅',\n '芼',\n '炊',\n '夯',\n '郪',\n '农',\n '褲',\n '嘬',\n '蹻',\n '烔',\n '罄',\n '开',\n '靴',\n '镇',\n '杯',\n '羰',\n '硪',\n '籍',\n '摘',\n '馀',\n '餐',\n '眯',\n '⑴',\n '呗',\n '巫',\n '幤',\n '蒤',\n '蒗',\n '镥',\n '檵',\n '盛',\n '純',\n '娃',\n '●',\n '耿',\n '巡',\n '婴',\n '槔',\n 'i',\n '颊',\n 'Ⅳ',\n '栅',\n '绅',\n '邘',\n '冉',\n '碧',\n '使',\n '熨',\n '羞',\n '扼',\n '漳',\n '觯',\n '楊',\n '励',\n '逑',\n '咄',\n '之',\n '斤',\n '嘣',\n '鹰',\n '媸',\n '鲂',\n '褚',\n '磚',\n '琨',\n '聪',\n '牖',\n '太',\n '蓍',\n '涫',\n '≤',\n '虽',\n '鸽',\n '燧',\n '褊',\n '聿',\n '壬',\n '然',\n '疚',\n '莲',\n '悴',\n '簃',\n '颓',\n '坠',\n '瞬',\n '汳',\n 'l',\n '登',\n '瘼',\n '窳',\n '桤',\n '縯',\n '匣',\n '坡',\n '↑',\n '愦',\n '攘',\n '渭',\n '嬢',\n '鲰',\n '性',\n '楚',\n '澈',\n '赪',\n '達',\n '鄯',\n '罅',\n '帽',\n '茠',\n '底',\n '嫜',\n '奏',\n '浅',\n '荽',\n '楹',\n '鼍',\n '枵',\n '嗔',\n '滍',\n '椴',\n '嵩',\n '氤',\n '搠',\n '两',\n '榔',\n '树',\n '吝',\n '基',\n '峂',\n '栎',\n '侮',\n '舸',\n '遂',\n '颡',\n '锷',\n '杼',\n '酔',\n '幄',\n '哽',\n '睢',\n '陔',\n '※',\n '嚆',\n '宬',\n '宽',\n '髦',\n '笾',\n '保',\n '蹊',\n '榕',\n '咏',\n '椋',\n '丧',\n '裤',\n '骛',\n '逧',\n '弇',\n '崆',\n '樘',\n '疤',\n '鸤',\n '伞',\n '抚',\n '诎',\n '诵',\n '豢',\n '佳',\n '差',\n '埝',\n '极',\n '黍',\n '煜',\n '曰',\n '阱',\n '悞',\n '叹',\n '垤',\n '藁',\n '嗵',\n '崔',\n '卫',\n '珂',\n '憯',\n '蔬',\n '菜',\n '碑',\n '扈',\n '铆',\n '夹',\n '衡',\n '弱',\n '挈',\n '徜',\n '疠',\n '丶',\n '遠',\n '提',\n '斧',\n '炟',\n '肺',\n 'B',\n '她',\n '晟',\n '谎',\n '邱',\n '粳',\n '酽',\n '爨',\n '鬼',\n '伧',\n '兹',\n '嶓',\n '谤',\n '饕',\n '揶',\n '谱',\n '歡',\n '髪',\n '餍',\n '泳',\n '郞',\n '谣',\n '汉',\n '褐',\n '非',\n '刽',\n '缅',\n '饴',\n '齐',\n '兴',\n '涯',\n '芫',\n '凡',\n '褶',\n '晡',\n '努',\n '蚶',\n '彥',\n '皤',\n '砌',\n '黼',\n '吹',\n '指',\n '㙟',\n '蓁',\n '鹜',\n '話',\n '拊',\n '辨',\n '盎',\n '肌',\n '旘',\n '软',\n '颍',\n '甏',\n '滚',\n '旦',\n '滨',\n '间',\n '尴',\n '对',\n '鄘',\n '称',\n '镗',\n '咅',\n '璐',\n '怔',\n '垛',\n '洎',\n '瓮',\n '绨',\n '脚',\n '遒',\n '吊',\n '纸',\n '蹅',\n '经',\n '泉',\n '武',\n '汀',\n '歪',\n '败',\n '拾',\n '铪',\n '吼',\n '邹',\n '磊',\n '论',\n '岛',\n '厍',\n '锛',\n '芎',\n '芭',\n '音',\n '澧',\n '镕',\n '锒',\n '宙',\n '牵',\n '忱',\n '嫔',\n '麯',\n '澉',\n '擐',\n '砥',\n '撞',\n '痴',\n '盹',\n '畿',\n '厾',\n '酸',\n '俑',\n '脽',\n '鸈',\n '枷',\n '咨',\n '蔹',\n '诂',\n '胰',\n '董',\n '脶',\n '黩',\n '髓',\n '鉵',\n '澎',\n '鲽',\n '梧',\n '樱',\n '诜',\n '鲯',\n '跂',\n '盂',\n '浴',\n '苻',\n '锅',\n '實',\n '碁',\n '嘛',\n '氕',\n '艮',\n '涟',\n '绢',\n '姿',\n '茝',\n '砘',\n '簿',\n '穷',\n '镃',\n '∈',\n '抽',\n '事',\n '誜',\n '窅',\n '瀘',\n '鲹',\n '兖',\n '嵎',\n '陧',\n '榍',\n '轶',\n '柿',\n '藤',\n '薏',\n '娆',\n '骷',\n '梅',\n '摒',\n '睪',\n '剪',\n '羸',\n '忧',\n '邝',\n '跺',\n '旆',\n '堕',\n '伫',\n '绍',\n '疵',\n '樟',\n '–',\n '绾',\n '蜴',\n '靸',\n '侃',\n '瘘',\n '珧',\n '遨',\n '縠',\n '信',\n '充',\n '桔',\n '黇',\n '劬',\n '脒',\n '良',\n '俵',\n '颙',\n '轹',\n '犿',\n '屐',\n '牾',\n '４',\n '兮',\n '澝',\n '汗',\n '沼',\n '铲',\n '濋',\n '鹬',\n '丝',\n '妫',\n '重',\n '蒺',\n '磲',\n '曚',\n '尔',\n '国',\n '桐',\n '俣',\n '剐',\n '哼',\n '恹',\n '哧',\n '藔',\n '谓',\n '轨',\n '眩',\n '痞',\n '添',\n '鬯',\n '库',\n '梱',\n '婕',\n '蜢',\n '贿',\n '敕',\n '泯',\n '羟',\n '龇',\n '垸',\n '左',\n '肖',\n '辎',\n '鞣',\n '谄',\n '可',\n '腺',\n '末',\n '狞',\n '贷',\n '嗌',\n '仕',\n '楞',\n '膻',\n '臻',\n '欻',\n '洲',\n '所',\n '檀',\n '抔',\n '罹',\n '牒',\n '仫',\n '芨',\n '柄',\n '嫩',\n '酒',\n '祙',\n '渠',\n '的',\n '笨',\n '鳐',\n '楡',\n '过',\n '苡',\n '核',\n '拖',\n '阢',\n '莒',\n '凤',\n '锋',\n '`',\n '硎',\n '弁',\n '鬶',\n '朐',\n '忏',\n '於',\n '昊',\n '剟',\n '咳',\n '湘',\n '日',\n '满',\n '哨',\n '螵',\n '餪',\n '放',\n '佶',\n '葵',\n '硷',\n 'ｃ',\n '抱',\n '锥',\n '芮',\n '啻',\n '惊',\n '峁',\n '琊',\n '嶲',\n '撺',\n '煅',\n '屏',\n '袗',\n '鄞',\n '梓',\n '鹌',\n '宅',\n '赂',\n '鱼',\n '洱',\n '騳',\n 'E',\n '物',\n '觏',\n '雙',\n '瑀',\n '上',\n '淩',\n '愀',\n '❋',\n '鄙',\n '憝',\n '沛',\n '硫',\n '产',\n '垯',\n '亁',\n '枭',\n '堰',\n '赑',\n '趾',\n '庹',\n '腭',\n '迨',\n '拚',\n '晒',\n '蜇',\n '扣',\n '纰',\n '闵',\n '窭',\n '椽',\n '菏',\n '嘁',\n '伛',\n '郸',\n '素',\n '殷',\n '表',\n '躞',\n '笸',\n '耻',\n '荧',\n '辛',\n '篑',\n '馈',\n '壮',\n '耩',\n '宛',\n '慰',\n '盡',\n '塆',\n '铯',\n '苏',\n '王',\n '桕',\n '⑧',\n '°',\n '浚',\n '栉',\n '朘',\n '虚',\n '骆',\n '坂',\n '秤',\n '鲋',\n '蕊',\n '渝',\n '呦',\n '潼',\n '驱',\n '诼',\n '峇',\n '盤',\n '趴',\n '肄',\n '笑',\n '讹',\n '貋',\n '穂',\n '啼',\n '趟',\n '暽',\n '傣',\n '蜎',\n '挎',\n '陳',\n '勖',\n '戴',\n '旃',\n '瞎',\n '舌',\n '幻',\n '喾',\n '赁',\n 'Ｅ',\n '播',\n '诀',\n '蟛',\n '鹛',\n '骶',\n '輸',\n '連',\n '醳',\n '逅',\n '奉',\n '崖',\n '娩',\n '幔',\n '佃',\n '扅',\n '阔',\n '生',\n '贬',\n '疯',\n '珀',\n '苶',\n '屯',\n '裣',\n '蹯',\n '蝮',\n '解',\n '陂',\n '疝',\n '茈',\n '帑',\n '议',\n '仲',\n '埙',\n '竺',\n '峰',\n '遮',\n '涎',\n '穸',\n '阂',\n '潵',\n '镱',\n '例',\n '荑',\n 'u',\n '脎',\n '衍',\n '轲',\n '⑵',\n '虾',\n '颚',\n '钞',\n '²',\n '伴',\n '根',\n '沣',\n '腌',\n '户',\n '~',\n '辙',\n '愧',\n '噤',\n '觥',\n '波',\n '铗',\n '纂',\n '鲺',\n '僚',\n '毐',\n '〇',\n '桼',\n '祗',\n '慢',\n '啵',\n '坏',\n '吗',\n '嗞',\n '甬',\n '曈',\n '徹',\n '灏',\n '混',\n '渌',\n '括',\n '脖',\n '汝',\n '現',\n '訇',\n '紅',\n '飘',\n '虢',\n '腱',\n '旄',\n '嬴',\n '昨',\n '孀',\n '蚁',\n '呛',\n '讳',\n '病',\n ',',\n '喈',\n '蒋',\n '镭',\n '葩',\n '耲',\n '鳈',\n '锄',\n '喘',\n '返',\n '傕',\n '咆',\n '享',\n '枥',\n '瓠',\n '茳',\n '铱',\n '脘',\n '暹',\n '廒',\n '爝',\n '橹',\n '瞑',\n '铎',\n '岢',\n '叁',\n '翏',\n '捭',\n '賀',\n '悉',\n '帝',\n '芥',\n '牀',\n '闌',\n '毯',\n '亍',\n '弧',\n '锆',\n '币',\n '祊',\n '纔',\n '齑',\n '肟',\n '绤',\n '獨',\n '翚',\n '颢',\n '係',\n '鍪',\n '粉',\n '统',\n '诗',\n '娜',\n '褥',\n '鈺',\n '湔',\n '呤',\n '犸',\n '湨',\n '泣',\n '蟾',\n '犾',\n '烛',\n '斐',\n '朦',\n '室',\n '诨',\n '榭',\n '煦',\n '醺',\n '敞',\n '燮',\n '糅',\n '衽',\n '孔',\n '猄',\n '疭',\n '辰',\n '钽',\n '胁',\n '釆',\n '钉',\n '胤',\n '涧',\n '弼',\n '濯',\n '汨',\n '颖',\n '茫',\n '皑',\n '遏',\n '捃',\n '坭',\n '燴',\n '肩',\n '滞',\n '玢',\n '巽',\n '砺',\n '蜿',\n '毁',\n '億',\n '骥',\n '本',\n '忽',\n '肚',\n '搽',\n '靰',\n '郴',\n '跆',\n '客',\n '酣',\n 'α',\n '屎',\n '辩',\n '殂',\n '垝',\n '紫',\n '秦',\n '喇',\n '凶',\n '傧',\n '铐',\n '蘊',\n '補',\n '贤',\n '竿',\n '途',\n '慗',\n '榖',\n '券',\n '莠',\n '逆',\n '鳇',\n '误',\n '崟',\n '妇',\n '磷',\n '捧',\n '莸',\n '⇋',\n '绺',\n '稻',\n '填',\n '逋',\n '侈',\n '隶',\n '侵',\n '翥',\n '惘',\n '惧',\n '鸥',\n '赠',\n '壳',\n '芯',\n '巩',\n '獗',\n '硅',\n '搎',\n '鲛',\n '9',\n '夸',\n '穆',\n '缜',\n '诓',\n '观',\n '薛',\n '咎',\n '杧',\n '页',\n '饫',\n '瑟',\n '率',\n '礤',\n '悭',\n '畔',\n '匯',\n '匮',\n '鼠',\n '犒',\n '芡',\n '傍',\n '嫂',\n '啸',\n '鄉',\n '哭',\n '鄱',\n '捷',\n '靺',\n '嚒',\n '嘀',\n '哒',\n '#',\n '拼',\n '钚',\n '魁',\n '霣',\n '眶',\n '郊',\n '死',\n '愁',\n '箭',\n '鼙',\n '签',\n '害',\n '斛',\n '睑',\n '蟜',\n '余',\n '墨',\n '様',\n '读',\n '養',\n '貉',\n '较',\n '浆',\n '翩',\n '徂',\n '冕',\n '铧',\n '列',\n '诈',\n '穝',\n '缑',\n '纲',\n '志',\n '舀',\n '甾',\n '举',\n '馁',\n 'ä',\n '畹',\n '榼',\n '垢',\n '襁',\n '麟',\n '灭',\n '佴',\n '镩',\n '酝',\n '柒',\n '梯',\n '傈',\n '萭',\n '悫',\n '莨',\n '搞',\n '＋',\n '兄',\n '偲',\n '攀',\n '曝',\n '嵝',\n '喳',\n '从',\n '遶',\n '撴',\n '.',\n '鄄',\n '欲',\n '挺',\n '娡',\n '发',\n '速',\n '胲',\n '褀',\n '态',\n '行',\n '蚓',\n '坼',\n '适',\n '厦',\n '寐',\n '带',\n '緃',\n '醤',\n '珽',\n '‧',\n '溍',\n '斋',\n '鐀',\n '朝',\n '欢',\n '传',\n '築',\n '咪',\n '据',\n '蹜',\n '医',\n '妄',\n '肇',\n '囝',\n '怡',\n '镎',\n '桩',\n '轩',\n '岔',\n '腐',\n '矽',\n '媵',\n '搒',\n '菔',\n '拘',\n 'Ｄ',\n '欃',\n '唧',\n '瞒',\n '郈',\n '绦',\n '吟',\n '撝',\n '醉',\n '镣',\n '匝',\n '拎',\n '砒',\n '顸',\n '袁',\n '驼',\n '愔',\n '实',\n '國',\n '奧',\n '胩',\n '府',\n '逾',\n '愕',\n '廷',\n '碌',\n '锖',\n '狩',\n '褴',\n '镢',\n '芷',\n '娥',\n '唤',\n '┌',\n '云',\n 'О',\n '檔',\n '驴',\n '躯',\n '驺',\n '洃',\n '檑',\n '窴',\n '（',\n '腕',\n '立',\n '楯',\n '齮',\n '〔',\n '漆',\n 'k',\n '芍',\n '蹽',\n '鬓',\n '概',\n '楣',\n '唐',\n '闲',\n '糗',\n '旱',\n '幸',\n '腽',\n '嗄',\n '迂',\n '镠',\n '顿',\n '扥',\n '圃',\n '烜',\n '馍',\n '佝',\n '岷',\n '童',\n '悦',\n '┐',\n '铌',\n '袈',\n '靓',\n '骸',\n '和',\n '乔',\n '灸',\n '泓',\n '临',\n '睿',\n '掖',\n '偿',\n '鐘',\n '犁',\n '祓',\n '鈴',\n '搌',\n '授',\n '鹳',\n '赢',\n '怅',\n '絪',\n '硬',\n '芙',\n '螅',\n '”',\n '傢',\n '避',\n '裕',\n '歁',\n '全',\n '衰',\n '仃',\n '媛',\n '鬻',\n '跽',\n '沌',\n '急',\n '猷',\n '激',\n '巉',\n '哝',\n '渣',\n '笫',\n '跳',\n '螫',\n '熜',\n 'Ｚ',\n '筷',\n '佩',\n '啶',\n '萃',\n '頫',\n '荙',\n '出',\n '孽',\n '钟',\n '戡',\n '釉',\n '咬',\n '滦',\n '鹇',\n '贯',\n '鹮',\n '具',\n '翁',\n '机',\n '濱',\n '谳',\n '釣',\n '懑',\n '葛',\n '袯',\n '谭',\n '质',\n '胴',\n '誊',\n '侗',\n '⑩',\n '静',\n '蚜',\n '溋',\n '嫪',\n '嗲',\n '瑭',\n '座',\n '舫',\n '靶',\n '棘',\n '泊',\n '嵖',\n '摧',\n '勋',\n '僡',\n '藉',\n '疖',\n '巂',\n '随',\n '罾',\n '崚',\n '猹',\n '憨',\n '苘',\n '斓',\n '鼷',\n '利',\n '谲',\n '剔',\n '艺',\n '箓',\n '蛀',\n '鲚',\n '搐',\n '裟',\n '捶',\n '绌',\n '揪',\n '帮',\n '缥',\n '匍',\n '冀',\n '杻',\n '逛',\n '邑',\n '禾',\n '郰',\n '黜',\n '丘',\n '樂',\n '滌',\n '緣',\n '胃',\n '苄',\n '巾',\n '瑜',\n '元',\n '蝶',\n '层',\n '烧',\n '级',\n '岭',\n '蘭',\n '繇',\n '蝓',\n '洞',\n '奢',\n '则',\n '政',\n '矾',\n '啭',\n '瘠',\n '碴',\n '忤',\n '身',\n '匠',\n '警',\n '饩',\n '犬',\n '皲',\n '箔',\n '豕',\n '虑',\n '草',\n '喟',\n '芤',\n '逭',\n '艳',\n '幡',\n '姚',\n '賓',\n '饪',\n '卯',\n '敌',\n '烽',\n '嫚',\n '黝',\n '豺',\n '㭗',\n '教',\n '偕',\n '板',\n '茹',\n '孤',\n '人',\n '狻',\n '寰',\n '厕',\n '玲',\n '璨',\n '锵',\n '搛',\n '勍',\n '匾',\n '聃',\n '奘',\n '垃',\n '焓',\n '喽',\n '嫫',\n '貌',\n '瘐',\n '嚰',\n '孟',\n '衔',\n '郎',\n '账',\n '础',\n '电',\n '黑',\n '骁',\n '拨',\n '濆',\n '圉',\n '刮',\n '闭',\n '竣',\n '铅',\n '羔',\n '硌',\n '筑',\n '难',\n '管',\n '苕',\n '眺',\n '嫄',\n '竖',\n '榟',\n '崴',\n '摭',\n '狐',\n '娑',\n '②',\n '罽',\n '谊',\n '←',\n '狳',\n '铫',\n '凯',\n '狉',\n '９',\n '肪',\n '崤',\n '莊',\n '妨',\n '缶',\n '滃',\n '瀦',\n '揉',\n '肫',\n '恧',\n '糯',\n '嵬',\n '５',\n '裆',\n '嚷',\n '稣',\n '隐',\n '仂',\n 'て',\n '驹',\n '籽',\n '肢',\n '尘',\n '苈',\n '撷',\n '镲',\n '趹',\n '晤',\n '唱',\n '鉏',\n '篌',\n '驩',\n '雍',\n '闳',\n '拄',\n '藜',\n '朴',\n '伺',\n '诳',\n '房',\n '吱',\n 'Й',\n '鳄',\n '罿',\n '祧',\n '酩',\n '郅',\n '耎',\n '尜',\n '绝',\n '禅',\n '揠',\n '鎏',\n '慕',\n '麥',\n '呜',\n '鸫',\n '党',\n '尝',\n '砑',\n '牌',\n '踉',\n '刨',\n '襻',\n '㾄',\n '螽',\n '谌',\n '止',\n '抑',\n '爻',\n '磬',\n '铄',\n '蓠',\n '委',\n '汲',\n '鹑',\n '╱',\n '嚣',\n '彝',\n '穄',\n '穹',\n '態',\n '醋',\n '⒀',\n '叼',\n '婳',\n '簌',\n '渥',\n '很',\n '甸',\n '帅',\n '锏',\n '与',\n '樾',\n '泷',\n '棼',\n '湲',\n '越',\n '祥',\n '短',\n '顼',\n '阘',\n '宋',\n '馘',\n '鈉',\n '未',\n '囍',\n '浏',\n '叻',\n '箜',\n '鑽',\n '法',\n '曲',\n '淤',\n '僮',\n '做',\n '强',\n '析',\n '磕',\n '谠',\n '染',\n '促',\n '朊',\n '隼',\n '铉',\n '莆',\n '蝣',\n '孛',\n '薮',\n 's',\n '惴',\n '秘',\n '妩',\n '訄',\n '蔓',\n '喷',\n '诡',\n '犷',\n '酐',\n '酇',\n '刹',\n '壅',\n '甫',\n '史',\n '孃',\n '髌',\n '螬',\n '擤',\n '漏',\n '寞',\n '奡',\n '悢',\n '颔',\n '岁',\n '耄',\n '；',\n '又',\n '锭',\n '鲤',\n '癔',\n '杰',\n '孥',\n '酲',\n '蓐',\n '耋',\n '捆',\n '庖',\n '面',\n '鹈',\n '殊',\n '剡',\n '峪',\n '识',\n '锨',\n '归',\n '茴',\n '—',\n '菤',\n '汁',\n '攝',\n '液',\n '鼐',\n '示',\n '讠',\n '男',\n '凍',\n 'ò',\n '明',\n '莓',\n '砜',\n '崎',\n '蜂',\n '斡',\n '榫',\n '娅',\n '钪',\n '昙',\n '胜',\n '欣',\n '怨',\n '◆',\n '粗',\n '秷',\n '节',\n '市',\n '贩',\n '祟',\n '弍',\n '蒟',\n '烁',\n '糧',\n '蠃',\n '編',\n '黙',\n '壕',\n '戚',\n '犊',\n '桥',\n '仺',\n '孳',\n '怯',\n '皓',\n '倆',\n '垮',\n '扩',\n '诮',\n '钝',\n '脯',\n '晏',\n '帔',\n '葫',\n '瑾',\n '運',\n '孬',\n '跄',\n '掣',\n '癜',\n '掌',\n '墀',\n '禇',\n '耸',\n '蜓',\n '鹆',\n '鄢',\n '攰',\n '瘢',\n '暝',\n '鸣',\n '峧',\n '遵',\n '笃',\n '畚',\n '帧',\n '晨',\n '镔',\n '搜',\n '靠',\n '咐',\n '韓',\n '绮',\n '觉',\n '拦',\n '斲',\n '疽',\n '掐',\n '尽',\n '許',\n '矶',\n '镉',\n '豹',\n '粞',\n '袋',\n '酵',\n '蛙',\n '戕',\n '劉',\n '髀',\n '彭',\n '玎',\n '囿',\n '郐',\n '善',\n '睃',\n '結',\n '拧',\n '邯',\n '讧',\n '召',\n '椭',\n '瑪',\n '痼',\n '庼',\n '反',\n '疱',\n '屠',\n '荣',\n '君',\n '胍',\n '乙',\n '臬',\n '头',\n '诰',\n '讪',\n '席',\n '晁',\n ':',\n '理',\n '槿',\n '璘',\n '禧',\n '呢',\n '蹙',\n '擒',\n '鸲',\n '丐',\n '苓',\n '壑',\n '滥',\n '⑾',\n '炗',\n '礴',\n '耕',\n '卅',\n '唿',\n '苛',\n '寵',\n '窖',\n '麻',\n '蕨',\n '沤',\n '氢',\n '虔',\n '癃',\n '及',\n '崛',\n '爽',\n '蛔',\n '颤',\n '膲',\n '桢',\n '坐',\n '蟞',\n '儇',\n '葚',\n '骤',\n '誤',\n '寝',\n '嘭',\n '灰',\n '汹',\n '韂',\n '铮',\n '慒',\n '寶',\n '肽',\n '摅',\n '紧',\n '亞',\n '潸',\n '悯',\n '橛',\n '檗',\n '闹',\n '愿',\n '担',\n '袄',\n '棚',\n '垟',\n '塄',\n '婞',\n '麈',\n '麸',\n '暗',\n '咦',\n '跞',\n '谡',\n '盈',\n '磐',\n '慎',\n '瘰',\n '掼',\n '憔',\n '研',\n '被',\n '贮',\n '莛',\n '至',\n '呀',\n '庑',\n '矫',\n '摛',\n '怃',\n '缙',\n '磺',\n '即',\n '驻',\n '瘤',\n '偏',\n '℃',\n '嫘',\n '癫',\n '汈',\n '鹟',\n '搅',\n '辅',\n '璀',\n '阊',\n '绻',\n '瑙',\n '蓂',\n '棺',\n '孢',\n '铊',\n '鼒',\n '果',\n '砮',\n '飾',\n '凰',\n 'Я',\n '遗',\n '祛',\n '纮',\n '劲',\n '霹',\n '骃',\n '绔',\n '薅',\n '瀵',\n '垅',\n '？',\n '轻',\n '惇',\n '怕',\n '啥',\n '哙',\n '燎',\n '缆',\n '匡',\n '怫',\n '卞',\n '朋',\n '酏',\n '阑',\n '爾',\n '伏',\n '敏',\n '埼',\n '罩',\n '菹',\n '艋',\n '肭',\n '鯭',\n '杋',\n '裀',\n '撬',\n '蕺',\n '惠',\n '大',\n '爇',\n '笈',\n '絷',\n '琳',\n '谫',\n '诛',\n '糇',\n '袢',\n '倓',\n '髃',\n '觽',\n '埏',\n '寖',\n '個',\n '筴',\n '外',\n '漯',\n '樭',\n '喁',\n '杀',\n '臑',\n '缇',\n '裸',\n '巅',\n '毹',\n '茅',\n '忆',\n '琼',\n '唑',\n '烷',\n '项',\n '隋',\n '约',\n '排',\n '吮',\n '谂',\n '宝',\n '牲',\n '瘫',\n '娄',\n '沂',\n '醫',\n '拭',\n '纺',\n '蹰',\n '哞',\n '风',\n '霆',\n '值',\n '酺',\n '侠',\n '螾',\n '埂',\n '育',\n '夷',\n '鮼',\n '怍',\n '鸠',\n 'Θ',\n '瞳',\n '阇',\n '耥',\n '羝',\n '伽',\n '洴',\n '記',\n '楔',\n '颼',\n '沪',\n '邢',\n '冰',\n '昀',\n '阙',\n '洌',\n '嫦',\n '杂',\n '仔',\n '芑',\n '潴',\n '痄',\n '桨',\n '连',\n '碓',\n '塈',\n 'Ｆ',\n '昇',\n '何',\n '桦',\n '晥',\n '驵',\n '旋',\n '药',\n '银',\n '奋',\n '灣',\n '俐',\n '絡',\n '嫁',\n '浮',\n '为',\n '鞅',\n '科',\n '颦',\n '潽',\n '镍',\n '鸨',\n '粵',\n '骂',\n '拱',\n '韫',\n '盆',\n '赎',\n '尿',\n '钿',\n '坍',\n '唁',\n '秧',\n '昌',\n '曆',\n '颋',\n '遭',\n '秭',\n '褔',\n '腋',\n '〉',\n '吉',\n '漓',\n '臆',\n '焘',\n '已',\n '制',\n '钹',\n '鴨',\n '咖',\n '莘',\n 'P',\n '碥',\n '互',\n '治',\n '标',\n '膝',\n '伪',\n '浿',\n '纛',\n '郗',\n '看',\n '佧',\n '糖',\n '篓',\n '亡',\n '´',\n '骙',\n '澡',\n '影',\n '窂',\n '紬',\n '镅',\n '慌',\n '框',\n '晋',\n '説',\n '丢',\n '凹',\n '卖',\n '巧',\n '蹉',\n '乾',\n '莫',\n 'Z',\n '谔',\n '矧',\n '铑',\n '暴',\n '庄',\n '湿',\n '活',\n '穿',\n '腩',\n '筣',\n '水',\n '６',\n '琦',\n '迈',\n '伯',\n '洄',\n '抡',\n '▪',\n '酋',\n '荤',\n '雒',\n '粕',\n '簠',\n '菰',\n '髁',\n '枇',\n '陲',\n '多',\n '仗',\n '央',\n '滁',\n '胸',\n '梏',\n '痉',\n '姑',\n '襞',\n '﹑',\n '齿',\n '弩',\n '花',\n '吆',\n '赫',\n '岵',\n '佪',\n '谑',\n '锤',\n '轴',\n '盐',\n '馄',\n '臜',\n '戢',\n '涠',\n '鸸',\n '糟',\n '孪',\n '禁',\n '蒲',\n '化',\n '疏',\n '痰',\n '脾',\n '刈',\n '應',\n '珍',\n '膺',\n '扌',\n '廙',\n '汜',\n '牍',\n '虐',\n '婿',\n '啕',\n '彻',\n '赝',\n '陶',\n '蠲',\n '>',\n '位',\n '屁',\n '醍',\n '粢',\n '挪',\n '臌',\n '滹',\n '遴',\n '馨',\n 'n',\n '稼',\n '徊',\n '酌',\n '轸',\n '债',\n '朰',\n '程',\n '辞',\n '痊',\n '插',\n '鹩',\n '郄',\n '铝',\n '狱',\n '叱',\n '同',\n '寄',\n '搪',\n '蚯',\n '魭',\n '舍',\n '旷',\n '闰',\n '涝',\n '民',\n '嗡',\n '苌',\n '馕',\n '姥',\n '屉',\n '啧',\n '枢',\n '❤',\n '窕',\n '钊',\n '矬',\n '菂',\n '佑',\n '≠',\n '獬',\n '桁',\n '墟',\n '皖',\n '鼻',\n '它',\n '歇',\n '独',\n '好',\n '晕',\n '蚝',\n '锞',\n '颈',\n '豚',\n '聖',\n '裉',\n '扫',\n '岿',\n '悒',\n '佥',\n '苗',\n '妞',\n '晚',\n '圭',\n '茼',\n '脲',\n '摊',\n '窠',\n '狸',\n '抻',\n '场',\n '呼',\n '囟',\n '噗',\n '狺',\n '困',\n '瀹',\n '削',\n '衬',\n '谰',\n '蛆',\n '訓',\n '鉄',\n '痃',\n '炱',\n '蝻',\n '我',\n '暨',\n '骓',\n '馋',\n '埤',\n '脞',\n '晃',\n '螟',\n '洮',\n '泛',\n '掾',\n '穑',\n '米',\n '蕲',\n '玦',\n '讙',\n '逢',\n '劐',\n '袭',\n '凫',\n '僳',\n '畛',\n '晷',\n '鳕',\n 'Ë',\n '愬',\n '坫',\n '鳡',\n '鞯',\n '叔',\n '胂',\n '囚',\n '筋',\n '青',\n '度',\n '涕',\n '琰',\n '﹔',\n '径',\n '陇',\n '睛',\n '链',\n '状',\n '逶',\n '蘅',\n '“',\n '庇',\n '邽',\n '纥',\n '踶',\n '爺',\n '狭',\n '钫',\n '桃',\n '弛',\n '淳',\n '办',\n '茕',\n '砸',\n '喱',\n '仅',\n '潞',\n '杈',\n '得',\n '咕',\n '俞',\n '检',\n '借',\n '恋',\n '驿',\n '倌',\n '钢',\n '琐',\n '哆',\n '撙',\n '箫',\n '川',\n '猥',\n '牢',\n '蹁',\n '城',\n '馏',\n '锡',\n '楝',\n '蛱',\n '奈',\n '瑶',\n '桺',\n '耆',\n '翟',\n '阒',\n '稲',\n '橐',\n '萱',\n '惹',\n '蘼',\n '主',\n '擦',\n '蟒',\n '台',\n '佬',\n '荫',\n '廖',\n '笏',\n '铕',\n '衣',\n '洇',\n '炒',\n '瀍',\n '崭',\n '圻',\n '洚',\n '契',\n '嫱',\n '倏',\n '晶',\n '了',\n '堠',\n '勰',\n '椎',\n '询',\n '梗',\n '飒',\n '锰',\n '览',\n '溇',\n '寻',\n '蓅',\n '【',\n '碇',\n '井',\n '露',\n '顔',\n '堌',\n '庳',\n '踩',\n 'ｉ',\n '饷',\n '俊',\n '楫',\n '條',\n '搭',\n '奍',\n '羽',\n '憋',\n '岘',\n '毡',\n '曜',\n '乃',\n '′',\n '针',\n '羲',\n '菓',\n '吩',\n '咩',\n '鞘',\n '尊',\n '宫',\n '舜',\n '啖',\n '惗',\n '北',\n '懊',\n '骇',\n '阄',\n '躅',\n '权',\n '缲',\n '肥',\n '铜',\n '《',\n '录',\n '也',\n '棬',\n '煮',\n '舄',\n '厮',\n \"'\",\n '順',\n '受',\n '霜',\n '新',\n '售',\n '牞',\n '圣',\n '妗',\n '犴',\n '宥',\n '哦',\n '陀',\n '卺',\n '冚',\n '蹒',\n '亸',\n '禮',\n '骰',\n '瑢',\n '弒',\n '抛',\n '谷',\n '嫰',\n '動',\n '嘌',\n '惩',\n '枣',\n '忌',\n '茡',\n '爵',\n '嘚',\n '郧',\n '丨',\n '敲',\n '帚',\n '沭',\n '槊',\n '⑶',\n '專',\n '毶',\n '圄',\n '磅',\n '蛭',\n '由',\n '蠹',\n '剜',\n '诫',\n '秆',\n '愠',\n '藓',\n '母',\n '请',\n '衩',\n '忸',\n '蜕',\n '饽',\n '晦',\n '倔',\n '腠',\n '痛',\n '品',\n '簧',\n '父',\n '锐',\n '描',\n '蓰',\n '蛴',\n '箍',\n '兕',\n '苜',\n '饼',\n '奚',\n '泗',\n '裥',\n '皂',\n '嵚',\n '，',\n '澶',\n '蠖',\n '沅',\n '馎',\n '籀',\n '菝',\n '眵',\n '糥',\n '铽',\n '痤',\n '颟',\n '淄',\n '作',\n '抉',\n '俄',\n '么',\n '郑',\n '耒',\n '佛',\n '1',\n '纡',\n '鸢',\n '④',\n '鎚',\n '壖',\n '遢',\n '鬈',\n '拢',\n '托',\n '哈',\n '節',\n '橦',\n '冼',\n '六',\n '耗',\n '樵',\n '涔',\n '舳',\n '龌',\n '衿',\n '婧',\n '栓',\n '椹',\n '嘘',\n '膊',\n '茁',\n '丹',\n '螃',\n '剖',\n '洧',\n '珞',\n '潺',\n '孱',\n '呐',\n '萩',\n '刷',\n '引',\n '说',\n '熟',\n '/',\n '靖',\n '酷',\n '耠',\n '饬',\n '菌',\n '洙',\n '荃',\n '饲',\n '酾',\n '阁',\n '陬',\n '铿',\n '倻',\n '牮',\n '鞡',\n '撕',\n '倘',\n '盒',\n '曺',\n '襦',\n '辄',\n '算',\n '塬',\n '潢',\n '羖',\n '湾',\n '续',\n '△',\n '疙',\n '谖',\n '嘅',\n '遑',\n '篚',\n '筮',\n '氍',\n '递',\n '尧',\n 'G',\n '{',\n '分',\n '埒',\n '@',\n '蜍',\n '荼',\n '襆',\n '槭',\n '檠',\n '縢',\n '濉',\n '梆',\n '隔',\n '镛',\n '倞',\n '润',\n '瓯',\n '瓢',\n '蟊',\n '沐',\n '啷',\n '砚',\n '皱',\n '剅',\n '儙',\n '错',\n '幌',\n '滓',\n '砗',\n '郤',\n '喧',\n '峣',\n '簸',\n '毖',\n '踏',\n '锕',\n '…',\n '悖',\n '谧',\n '醵',\n '加',\n '镐',\n '泐',\n '傫',\n '胪',\n '缄',\n '卩',\n '蓼',\n '丸',\n '垌',\n '汞',\n '宴',\n '膙',\n '圊',\n '矻',\n '嚏',\n '漾',\n '幕',\n '駕',\n '葒',\n '绪',\n '袪',\n '镋',\n '杭',\n '澴',\n '鬃',\n '粟',\n '偻',\n '饳',\n '抨',\n '亟',\n '温',\n '韶',\n '轿',\n '罟',\n '际',\n '诖',\n '复',\n '坯',\n '骗',\n '*',\n '副',\n '裢',\n '憬',\n '邾',\n '崇',\n '蕈',\n '疮',\n '粽',\n '炝',\n '珲',\n '莅',\n '衾',\n '爲',\n '枯',\n '汛',\n '仁',\n '熏',\n '馥',\n '㎡',\n '檐',\n '锦',\n '竭',\n '颁',\n '遽',\n '瘙',\n '样',\n '遛',\n '殍',\n '湄',\n '消',\n '鳌',\n '痫',\n '鳏',\n '瓶',\n '窈',\n '谚',\n '麒',\n '鸹',\n '蟋',\n '横',\n '唠',\n '瘪',\n '媪',\n '侔',\n '鐵',\n '系',\n '杖',\n 'm',\n '叉',\n '沟',\n '衢',\n '寘',\n '■',\n '弗',\n '建',\n '疣',\n '珣',\n '綦',\n '劈',\n '道',\n '嘈',\n '先',\n '芝',\n '降',\n '滕',\n '邵',\n '邺',\n '給',\n ')',\n '廨',\n '郛',\n '势',\n '氇',\n '坤',\n '昂',\n '焼',\n '奕',\n '闱',\n '朓',\n '毽',\n '还',\n '坨',\n '銭',\n '龂',\n '銎',\n '壽',\n '矸',\n '窒',\n '①',\n '玷',\n '蝽',\n '泃',\n '烀',\n '魈',\n '★',\n '慶',\n 'K',\n '嘶',\n '酶',\n '呖',\n '殿',\n '乡',\n '䄂',\n '阳',\n '轪',\n '碱',\n '譬',\n '摩',\n '鳖',\n '刳',\n '地',\n '包',\n '貊',\n '悝',\n '圩',\n '今',\n '嚭',\n '凳',\n '谕',\n '馃',\n '捎',\n '佯',\n '侬',\n '愆',\n '微',\n '涤',\n '舔',\n '蛇',\n '筲',\n '助',\n '锾',\n '剧',\n '缧',\n '簪',\n '惚',\n '柢',\n '庾',\n '虹',\n '雪',\n '猡',\n '脔',\n '亶',\n '烨',\n 'Ｔ',\n '锗',\n '芈',\n '女',\n '动',\n '偬',\n '琥',\n '县',\n '诣',\n '精',\n '嬗',\n '栀',\n '艨',\n '智',\n '冗',\n '闼',\n '嗝',\n 'z',\n '夢',\n '拿',\n '鹲',\n '尤',\n '啮',\n '﹐',\n 'ɔ',\n '钓',\n '施',\n '萼',\n '邻',\n '竞',\n '碶',\n '艰',\n '》',\n '翻',\n '馆',\n '橪',\n '逝',\n '臀',\n '淫',\n '枉',\n '羿',\n '拇',\n '溷',\n '徒',\n '涓',\n '關',\n '聋',\n '嵊',\n '殖',\n '叛',\n '敫',\n '舵',\n '亊',\n '诽',\n '菱',\n '苎',\n '破',\n '腚',\n 'A',\n '嵋',\n '扊',\n '挂',\n '篷',\n '棂',\n '碟',\n '復',\n '劾',\n '韪',\n '疔',\n '粒',\n '鲵',\n '毙',\n '店',\n '锻',\n '衮',\n '寳',\n '◎',\n '斯',\n '倦',\n '醢',\n '曾',\n '茚',\n '荐',\n '隗',\n '芊',\n '豪',\n '亻',\n '哂',\n '堃',\n '宇',\n '桑',\n '匋',\n '植',\n '亥',\n '撂',\n '棒',\n '蟠',\n 'W',\n '迟',\n '蚋',\n '溊',\n '缌',\n '鞚',\n '蚤',\n '適',\n '赌',\n '卣',\n '厚',\n '鲾',\n '匙',\n '槃',\n '郎',\n '鬏',\n '玳',\n '龄',\n '丈',\n '圮',\n '冑',\n '院',\n '葬',\n '嵐',\n '瓦',\n '孵',\n '漶',\n '星',\n '吐',\n '獍',\n '藠',\n '萍',\n '振',\n '潜',\n '龉',\n '匦',\n '粹',\n '諾',\n '畵',\n '峦',\n '＆',\n '埕',\n '朵',\n '戒',\n '炳',\n '酪',\n '绂',\n '篁',\n '测',\n '殆',\n '涌',\n '业',\n '盏',\n '醊',\n '笆',\n '孰',\n '骊',\n '湛',\n '踰',\n '汎',\n '哲',\n '澙',\n '鲷',\n '√',\n '鄣',\n '亿',\n '螺',\n '吠',\n '伟',\n '凛',\n '骡',\n '恻',\n '巨',\n '扶',\n '泡',\n '峯',\n '韵',\n '腎',\n '睦',\n '栖',\n '}',\n '笙',\n '疌',\n '绶',\n '忒',\n '哥',\n '价',\n '纻',\n '薨',\n '漂',\n '濮',\n '缮',\n '勐',\n '妮',\n '傩',\n '陛',\n '陷',\n '柆',\n '瞭',\n '鲳',\n '烬',\n '喉',\n '固',\n '桡',\n '聊',\n '逦',\n '猊',\n '梻',\n '涵',\n '栒',\n '逍',\n '饥',\n '凼',\n '早',\n '姣',\n '蕤',\n '塌',\n '桀',\n '亳',\n '虻',\n '鹨',\n '典',\n '情',\n '怄',\n '商',\n '钍',\n '赚',\n '塥',\n '煽',\n '垱',\n '蝴',\n '乓',\n '籁',\n '帷',\n '锢',\n '圪',\n '快',\n '赘',\n '杵',\n '漠',\n '滴',\n '斩',\n '拈',\n '蚕',\n '陽',\n '篡',\n '郦',\n '瞻',\n '郯',\n '鳍',\n '幽',\n '旅',\n '乖',\n '鹖',\n '斫',\n '痂',\n '肸',\n '右',\n '锂',\n '永',\n '泾',\n '茎',\n '觱',\n '彼',\n '擎',\n '䨱',\n '翱',\n '徝',\n '醅',\n '求',\n '湫',\n '転',\n '溴',\n '師',\n '瓣',\n '蝠',\n '铭',\n '社',\n '苞',\n '仇',\n '噌',\n '你',\n '嗾',\n '雳',\n '榧',\n '駹',\n '雯',\n '叨',\n '遫',\n '氏',\n '航',\n '辗',\n '溢',\n '历',\n '楷',\n '诱',\n '雏',\n '梳',\n '藕',\n '屺',\n '槎',\n '钐',\n '燘',\n '棽',\n '驸',\n '褪',\n '清',\n '十',\n '廰',\n '移',\n '筌',\n '揾',\n '瞠',\n '姽',\n '馑',\n '恢',\n '逸',\n 'p',\n '瑚',\n '茄',\n '鹧',\n '俗',\n '璟',\n '栊',\n '买',\n '瀛',\n '镒',\n '球',\n '氲',\n '缛',\n '講',\n '胀',\n '焒',\n '悲',\n '翕',\n '拗',\n 'T',\n '桌',\n '脓',\n '闪',\n '稀',\n '狎',\n '火',\n '柁',\n '琴',\n '澍',\n '嗟',\n '龚',\n '楮',\n '噼',\n '隽',\n '栩',\n '焻',\n '哩',\n '藻',\n '瘸',\n '含',\n '偶',\n '界',\n '嘃',\n '昶',\n '澄',\n '頤',\n '绒',\n '鲁',\n '麝',\n '决',\n '撒',\n '岙',\n '季',\n '刿',\n '肝',\n '蒉',\n '蓇',\n '财',\n '完',\n '蠔',\n '脉',\n '肱',\n '谙',\n '蜮',\n '郭',\n '慨',\n '晔',\n '髂',\n '蛏',\n '眨',\n '钗',\n '葺',\n '惆',\n '娈',\n '瞵',\n '踞',\n '棁',\n '蝢',\n '嚎',\n '猝',\n '必',\n '剞',\n '关',\n '咛',\n '劫',\n '闸',\n '肯',\n '№',\n '莩',\n '哇',\n '蛑',\n '镬',\n '羡',\n '驊',\n '茂',\n '塍',\n '沓',\n '筱',\n '杉',\n '战',\n '茧',\n '耙',\n '击',\n '需',\n '腊',\n '酎',\n '畦',\n '葙',\n '鹘',\n '韭',\n '嚚',\n '争',\n '域',\n '伢',\n '鞲',\n '哳',\n '栲',\n '某',\n '翌',\n '哗',\n '焚',\n '螗',\n '懲',\n '躲',\n '約',\n '镖',\n '凿',\n '饶',\n '够',\n '剁',\n '铥',\n '应',\n '署',\n '杮',\n '蒂',\n ' ',\n '坷',\n '礅',\n '款',\n '梁',\n '鄜',\n '髹',\n '選',\n '伤',\n '路',\n 'З',\n '亲',\n '野',\n '啦',\n '捯',\n '憷',\n '鲩',\n '札',\n '怏',\n '塘',\n '绊',\n '愍',\n '簦',\n '牦',\n '黥',\n '鳜',\n '唉',\n 'Ｗ',\n '沱',\n '蚺',\n '甪',\n '摉',\n '协',\n '耨',\n '娱',\n '桄',\n '仆',\n '类',\n '搡',\n '滤',\n '岗',\n '休',\n '坶',\n '谒',\n '忭',\n '飨',\n '闷',\n '菟',\n '鲣',\n '驷',\n '湜',\n '疡',\n '蚩',\n '萊',\n '䝉',\n '硒',\n '贺',\n '弃',\n '徘',\n '陨',\n '否',\n '遥',\n '妒',\n 'X',\n '間',\n '觜',\n '跬',\n '夬',\n '羮',\n '喙',\n '赇',\n '鹗',\n '『',\n '砀',\n '残',\n '绿',\n '小',\n '勘',\n '瀌',\n '扉',\n '耧',\n '衅',\n '挟',\n '乐',\n '鹏',\n '墁',\n '澜',\n '噍',\n '坊',\n '術',\n '嗖',\n '知',\n '盉',\n '圆',\n '嗈',\n '蘖',\n '资',\n '爭',\n '=',\n '刑',\n '裒',\n '〈',\n '淸',\n '定',\n '袒',\n '戗',\n '钤',\n '吵',\n '旯',\n '蓝',\n '裎',\n '溅',\n '贰',\n '荏',\n '甥',\n '悌',\n '勤',\n '炽',\n '换',\n '躜',\n '!',\n '薄',\n '痱',\n '双',\n '匕',\n '肷',\n '挥',\n '茑',\n '船',\n '砝',\n '煤',\n '荜',\n '弘',\n '▏',\n '陆',\n '稔',\n '朽',\n '冤',\n '頉',\n '遊',\n '砰',\n '迎',\n '碎',\n '唪',\n '醪',\n '稆',\n '练',\n '锸',\n '阵',\n '皇',\n '香',\n '镀',\n '嫡',\n '持',\n '桶',\n '垄',\n '阍',\n '戥',\n '臣',\n '琛',\n '涘',\n '惶',\n '赙',\n '葆',\n '住',\n '舊',\n '枝',\n '媲',\n '蓣',\n '龅',\n '搦',\n '_',\n '图',\n '力',\n '纪',\n '悍',\n '麗',\n '戽',\n '腧',\n '绣',\n '跟',\n '哕',\n '打',\n '蝰',\n 'Φ',\n '吞',\n '功',\n '夀',\n '劓',\n '沇',\n '熔',\n '占',\n '隰',\n '命',\n '佻',\n '豁',\n '苣',\n '楦',\n '掇',\n '蛛',\n '唢',\n '郜',\n '霉',\n '鲏',\n '予',\n '沸',\n '殻',\n '俯',\n '探',\n '篪',\n '荇',\n '邈',\n '烯',\n '忮',\n '伸',\n '岬',\n '×',\n '锧',\n '窸',\n '毪',\n '纩',\n '蛋',\n '讯',\n '骼',\n '叶',\n '楂',\n '犟',\n '站',\n '盘',\n '隈',\n '喝',\n '儣',\n '兵',\n '尚',\n '孙',\n '爿',\n '芜',\n '羁',\n '旖',\n '溽',\n '迩',\n '京',\n '７',\n '龃',\n '狝',\n '缦',\n '缁',\n '鲃',\n '怒',\n '故',\n '據',\n '枫',\n '髙',\n '亭',\n '耳',\n '飚',\n 'O',\n '编',\n '箸',\n '幼',\n '氘',\n '鞮',\n '匐',\n '祯',\n '臃',\n '辫',\n '磋',\n '溝',\n '墙',\n '诚',\n '阻',\n '档',\n '歆',\n '璃',\n '悻',\n '婤',\n '映',\n '瑞',\n '牂',\n '话',\n '忠',\n '潘',\n '惋',\n '冬',\n '氦',\n '腔',\n '胬',\n '盔',\n '\"',\n '饮',\n '贶',\n '嚄',\n '儆',\n '溜',\n '砷',\n '樇',\n '跏',\n '泩',\n '馌',\n '埃',\n '莙',\n '革',\n '珙',\n '乌',\n '鍋',\n '穴',\n '石',\n '珺',\n '熹',\n '诞',\n '<',\n '腉',\n '姊',\n '钧',\n '罪',\n '拆',\n '赊',\n '殒',\n '堇',\n '仑',\n '掺',\n '塃',\n '獴',\n '迥',\n '盦',\n '檬',\n '益',\n '居',\n '鼑',\n '异',\n '嘻',\n '悔',\n '旮',\n '况',\n '時',\n '阋',\n '洛',\n '線',\n '＃',\n '型',\n '迕',\n '睇',\n '橱',\n '笊',\n '蛞',\n '愚',\n '茉',\n '镈',\n '镞',\n '垭',\n '扁',\n '泫',\n '搬',\n '古',\n '书',\n '疸',\n '痨',\n '黟',\n '墉',\n '料',\n '并',\n 'ㆍ',\n '裳',\n '鞑',\n '湮',\n '柠',\n '颐',\n '形',\n '━',\n '逹',\n '硁',\n '置',\n '韦',\n '瓞',\n '象',\n '殽',\n '均',\n '浓',\n '瞓',\n '椐',\n '洨',\n '乱',\n '襜',\n '终',\n '優',\n '睹',\n '敦',\n '鼬',\n '唆',\n '佼',\n '財',\n '瘃',\n 'H',\n '痳',\n '勺',\n '依',\n '虎',\n '蕖',\n '玄',\n '缓',\n '滢',\n '^',\n '骅',\n '诘',\n '弋',\n '：',\n '∩',\n '廪',\n '缈',\n '造',\n '蕉',\n '孖',\n '嫒',\n '寨',\n '意',\n '岽',\n '庶',\n '罗',\n '瞢',\n '酹',\n '蔟',\n '赴',\n '烂',\n '栋',\n '格',\n '矛',\n '驯',\n '词',\n '嗦',\n '剀',\n '蓓',\n '期',\n '鏢',\n '羑',\n '奴',\n '椱',\n 'Ａ',\n '狗',\n '烟',\n '蹬',\n '案',\n '记',\n '讴',\n '鳑',\n '侯',\n '霏',\n '焜',\n '沬',\n '份',\n '酦',\n '芗',\n '庚',\n '瑗',\n '鹎',\n '穗',\n '鲠',\n '肛',\n '厄',\n '蜔',\n '學',\n '伊',\n '⑥',\n '琪',\n '邒',\n '少',\n '霖',\n '蓖',\n '猜',\n '塾',\n '肾',\n '罃',\n '伐',\n '钩',\n '骈',\n '溟',\n '饵',\n '莉',\n 'é',\n '刖',\n '洯',\n '堉',\n '锝',\n '趔',\n '七',\n '萁',\n '竹',\n '憾',\n '蚨',\n '离',\n '柔',\n '替',\n '侑',\n '飙',\n '气',\n '震',\n '厥',\n '备',\n '刻',\n '顽',\n '瞽',\n '腄',\n '雄',\n '燃',\n '旬',\n '简',\n '翠',\n '熥',\n '◇',\n '吃',\n '囡',\n '玙',\n '铷',\n '暖',\n '配',\n '傻',\n '窄',\n '皈',\n '夼',\n '舂',\n '乜',\n '苩',\n '攉',\n '雠',\n '茇',\n '锈',\n '酰',\n '粮',\n '祝',\n '考',\n '堍',\n '鳅',\n '彬',\n '▲',\n '孝',\n '蠊',\n '顇',\n '娲',\n '腥',\n '$',\n '珠',\n '厂',\n '诠',\n '蹓',\n '轼',\n '嵫',\n '捩',\n '硗',\n '胺',\n '证',\n '膀',\n '」',\n '胯',\n '钷',\n '毂',\n '柙',\n '深',\n '沄',\n '匹',\n '８',\n '爷',\n '礳',\n '秏',\n '窜',\n '魑',\n 'd',\n '转',\n '烆',\n '屿',\n '眙',\n '極',\n '袤',\n '護',\n 'V',\n '狂',\n '柑',\n '玠',\n '氩',\n '’',\n '馊',\n '玛',\n '坢',\n '%',\n '燔',\n '颗',\n '舅',\n '暂',\n '艾',\n '芹',\n '溏',\n '晰',\n '件',\n '琚',\n '仿',\n '祾',\n '酤',\n '騠',\n '揳',\n '鲫',\n '蜥',\n '仨',\n '牺',\n '步',\n '讓',\n '港',\n '煲',\n '铴',\n '腦',\n '鳝',\n '危',\n '鋪',\n '冠',\n '正',\n '柽',\n '抍',\n '掘',\n '控',\n '娴',\n '娀',\n '離',\n '手',\n '臾',\n '酗',\n '筼',\n '煸',\n '弹',\n '照',\n '哎',\n '毒',\n '颀',\n '诙',\n '刚',\n '搢',\n '䧳',\n '峒',\n '滋',\n '\\\\',\n '匀',\n '黉',\n '毓',\n '娠',\n '床',\n '浪',\n '祐',\n '铟',\n '4',\n '?',\n '凄',\n '飗',\n '蚍',\n '葑',\n '抗',\n '鹞',\n '糸',\n '红',\n '英',\n '违',\n '橡',\n '眷',\n '防',\n '缬',\n '龠',\n '察',\n '仍',\n '辇',\n '减',\n '闫',\n '箴',\n '龍',\n '館',\n '屙',\n '翙',\n '媽',\n '涴',\n '到',\n '旻',\n '删',\n '瞾',\n '鏖',\n '咭',\n '豨',\n '荘',\n '炭',\n '畼',\n '构',\n '锘',\n '鉫',\n '候',\n '扇',\n '繄',\n '猩',\n '瘵',\n '恺',\n '贵',\n '榦',\n '息',\n '恽',\n '胎',\n '狰',\n '雜',\n '辋',\n '璜',\n '硈',\n '泠',\n '呔',\n '蹿',\n '踹',\n '摄',\n '炀',\n '坞',\n '蹄',\n '裝',\n '赛',\n '蝥',\n '塔',\n '靳',\n '荬',\n '找',\n '仡',\n '淮',\n '比',\n '淆',\n '义',\n '淝',\n '卢',\n '辟',\n '寂',\n '庒',\n '鳯',\n '暲',\n '景',\n '邪',\n '腻',\n '赍',\n '甍',\n '讲',\n '哌',\n '嶝',\n '鎌',\n '总',\n '缱',\n '问',\n '磛',\n '谅',\n '拉',\n '靈',\n '奭',\n '沆',\n '茔',\n '羅',\n '鄠',\n '網',\n '吏',\n '懵',\n '鑫',\n '歌',\n '黹',\n '嵘',\n '涞',\n '碳',\n '崂',\n '婥',\n '赞',\n '镑',\n '購',\n '幺',\n '鸰',\n '饟',\n '蝌',\n '忝',\n '懒',\n '禺',\n '梽',\n '齉',\n '恳',\n '拯',\n '弥',\n '荡',\n '芾',\n '幪',\n '厌',\n '馒',\n '蜘',\n '欸',\n '吣',\n '１',\n '却',\n '榻',\n '碾',\n '袂',\n '錎',\n '钬',\n '無',\n '嬉',\n '笞',\n '蹴',\n '视',\n '雇',\n '创',\n '椟',\n '6',\n '瘁',\n '斜',\n '傥',\n '喃',\n '炷',\n '秾',\n '嘱',\n '茀',\n '犄',\n '窑',\n '庀',\n '潍',\n '伦',\n '䀲',\n '凉',\n 'Р',\n '撻',\n '萜',\n '二',\n '倨',\n '蔑',\n '捕',\n '勚',\n '士',\n '鈇',\n '踺',\n '啤',\n '彧',\n '缪',\n '述',\n '傅',\n '颅',\n '畸',\n '畜',\n '滗',\n '慭',\n '琎',\n '斌',\n '参',\n '胳',\n '骖',\n '稠',\n '汰',\n '铻',\n '闯',\n '留',\n '蘘',\n '沏',\n '亦',\n '择',\n '華',\n '禽',\n '砟',\n '祼',\n '狃',\n '噫',\n '狼',\n '寤',\n '跪',\n '浠',\n '·',\n '费',\n '瓘',\n '鼹',\n '锪',\n '箢',\n '垣',\n '慊',\n '虏',\n '秩',\n '偉',\n '镏',\n '钯',\n '恐',\n '鹃',\n '菇',\n '炸',\n '潮',\n '蟀',\n '硂',\n '偌',\n '哏',\n '验',\n '桉',\n '阴',\n '初',\n '掴',\n '鹺',\n '峨',\n '赋',\n '舉',\n '裹',\n '赶',\n '土',\n '淋',\n '瘌',\n '沔',\n 'ｒ',\n '赀',\n '淖',\n '茯',\n '怛',\n '谜',\n '洗',\n '似',\n '舡',\n '纳',\n '晓',\n 'Ｒ',\n '诐',\n '痹',\n '漪',\n '顺',\n '挛',\n '阎',\n '贝',\n '钰',\n '惬',\n '疬',\n '菀',\n '埘',\n '怙',\n '部',\n '译',\n '鲭',\n '窋',\n '敢',\n '夜',\n '撰',\n '珅',\n '特',\n '襕',\n '癖',\n '胡',\n '⒃',\n '附',\n '擘',\n '痢',\n '尬',\n '鉴',\n '瞋',\n '膨',\n '阽',\n '挲',\n '⒄',\n '骎',\n '帕',\n '缕',\n '计',\n '障',\n '鳆',\n '隹',\n '朔',\n '碹',\n '当',\n '迦',\n '氙',\n '蘑',\n '妓',\n '炬',\n '苊',\n '萎',\n '浈',\n '沥',\n '绯',\n '壤',\n '噱',\n '蹾',\n '驶',\n '葱',\n '孕',\n '羹',\n '钻',\n '農',\n '勝',\n '膈',\n '灿',\n '赆',\n '靿',\n '耱',\n '陪',\n '忙',\n '缰',\n '奶',\n '儒',\n '个',\n '朱',\n '燹',\n '琮',\n '轷',\n '錾',\n '箅',\n '澳',\n '嗥',\n '攥',\n '没',\n '匿',\n '鲆',\n '|',\n '矣',\n '他',\n '鸶',\n '芸',\n 'Ｂ',\n '髑',\n '街',\n '巿',\n '廣',\n '盯',\n '監',\n '鲸',\n '胭',\n '凬',\n '寿',\n '挝',\n '绽',\n '+',\n '劝',\n '究',\n '眢',\n '集',\n '衙',\n '卷',\n 'j',\n '跶',\n '牡',\n '畯',\n '貅',\n '销',\n '發',\n '咱',\n '蓊',\n '揣',\n '咝',\n '琶',\n '荦',\n '阌',\n '盅',\n '嘹',\n '苟',\n '醮',\n '洪',\n '鲧',\n '钒',\n '柱',\n '氨',\n '旰',\n '冽',\n '茭',\n '嵇',\n '粲',\n '蛾',\n '訾',\n '辔',\n 'N',\n '尹',\n '趿',\n '蹲',\n '疟',\n '祠',\n '段',\n '車',\n '网',\n '⒉',\n '舷',\n '廐',\n '侣',\n '棵',\n '粜',\n '觐',\n '铼',\n '锁',\n '兒',\n '舁',\n '时',\n '垦',\n '版',\n '摈',\n '扳',\n '见',\n '腮',\n '嫖',\n '痭',\n '呆',\n '簖',\n '伋',\n '鳙',\n '珊',\n '麂',\n '既',\n '谴',\n '热',\n '超',\n '蠕',\n '铞',\n 'e',\n '殓',\n '因',\n '锿',\n '文',\n '禊',\n '皙',\n '鑙',\n '爹',\n '鋼',\n '忻',\n '秣',\n '镁',\n '奠',\n '橉',\n '畺',\n '笮',\n '疹',\n '湝',\n '龟',\n '殃',\n '毵',\n '溃',\n '勢',\n '索',\n '砉',\n '阼',\n '堞',\n '酥',\n '冁',\n '喊',\n '¥',\n '幛',\n '娇',\n '锲',\n '蕃',\n '铘',\n '铍',\n '鴿',\n '响',\n '傲',\n '脏',\n '杓',\n '罕',\n '笥',\n '弦',\n '但',\n '缃',\n '扬',\n '盲',\n '碚',\n '幢',\n '鎖',\n '缺',\n '钋',\n '麽',\n '禳',\n '浃',\n '啄',\n '昧',\n '蒴',\n '帙',\n '琏',\n '咧',\n '舰',\n '亵',\n '浊',\n '豳',\n '衲',\n '俏',\n '镵',\n '浩',\n '勾',\n '槛',\n '榈',\n '徙',\n '鹤',\n '洹',\n '铂',\n '揎',\n '棕',\n '挦',\n '挫',\n '阆',\n '衹',\n '甚',\n '近',\n '】',\n '簏',\n '汽',\n '踮',\n '淌',\n '檇',\n '痔',\n '谝',\n '钙',\n '蕞',\n '蔯',\n '兆',\n '蔽',\n '后',\n '蚬',\n '谸',\n '芟',\n '枞',\n '叫',\n '栗',\n '餘',\n '营',\n '郝',\n '氯',\n '㺃',\n '狍',\n '冏',\n '庛',\n '纱',\n '泼',\n '碍',\n '认',\n '邓',\n '茵',\n '饧',\n '闟',\n '惝',\n '裙',\n '噙',\n '忘',\n '虬',\n '群',\n 'S',\n '佗',\n '恼',\n '坟',\n '肮',\n '皮',\n '玃',\n '在',\n '赧',\n '孚',\n '偾',\n '镨',\n '恨',\n '葡',\n '西',\n '缞',\n '挠',\n '逃',\n '吾',\n '膪',\n '焦',\n '翘',\n '桧',\n '变',\n '渗',\n '繁',\n '際',\n '痘',\n '撼',\n '筅',\n '坑',\n '前',\n '玑',\n '数',\n '融',\n '鲌',\n '讦',\n '窃',\n '鄌',\n '伾',\n '众',\n '攻',\n '彪',\n '锎',\n '焐',\n '殛',\n '锊',\n '嗉',\n '枓',\n '抢',\n '鞠',\n '掩',\n '贾',\n '搔',\n '皁',\n '拶',\n '朗',\n '渺',\n '跛',\n '㛃',\n '鏾',\n '慥',\n '杆',\n '沈',\n '戍',\n '豫',\n '楠',\n '爆',\n '汤',\n '昉',\n '耘',\n '缡',\n '．',\n '允',\n '揜',\n '责',\n '艟',\n '裁',\n '喬',\n '砹',\n '鹣',\n '裼',\n '啉',\n '蛳',\n '酮',\n '听',\n '维',\n '阪',\n '獾',\n '浣',\n '訂',\n '瘿',\n '蜡',\n '泖',\n '蔚',\n '貔',\n '致',\n '禨',\n '尓',\n '糺',\n '绐',\n '遯',\n '笄',\n '邦',\n '圈',\n '洟',\n '缟',\n '槲',\n '桹',\n '镓',\n '骒',\n '髫',\n '暾',\n '像',\n '縻',\n '戊',\n '飧',\n '驽',\n '干',\n '万',\n '绕',\n '披',\n '雅',\n '桊',\n '卡',\n '贲',\n '吡',\n '沧',\n '鳟',\n '堂',\n '扺',\n '岱',\n '封',\n '鄭',\n '螣',\n '瞩',\n '幞',\n '邕',\n '睫',\n '涩',\n '自',\n '趱',\n '愣',\n '威',\n '酊',\n '罂',\n '慑',\n '袴',\n '架',\n '烘',\n '现',\n '灞',\n '钔',\n '股',\n '興',\n '乍',\n '噜',\n '济',\n '碛',\n '兀',\n '诅',\n '柴',\n '瓿',\n '[',\n '怿',\n '竦',\n '白',\n '黄',\n '阶',\n '务',\n '榮',\n '澹',\n '谏',\n '垓',\n '跸',\n '繻',\n '窿',\n '紊',\n '陟',\n '劁',\n '嗑',\n '牯',\n '厉',\n '敛',\n '鮕',\n '嘉',\n '蔻',\n '鼎',\n '恒',\n '硝',\n '溉',\n '骘',\n '窘',\n '任',\n '裱',\n '处',\n '旨',\n '舶',\n '缸',\n '囹',\n '笠',\n '讥',\n '泜',\n '脊',\n '煊',\n '淦',\n '牝',\n '硕',\n '胧',\n '泚',\n '溪',\n '贪',\n '牛',\n '答',\n '瘴',\n 'Q',\n '炯',\n '⑤',\n '篾',\n '銀',\n '乩',\n '杶',\n '垆',\n '蛐',\n '苔',\n '啪',\n 'y',\n '玮',\n '琫',\n '寮',\n '邂',\n '後',\n '僵',\n '贴',\n '硭',\n '枚',\n '姆',\n '乎',\n '讶',\n '醭',\n '橥',\n '脱',\n '蒈',\n '擞',\n '忪',\n '顾',\n '柚',\n '褿',\n '忲',\n '辖',\n '铡',\n '螠',\n '殉',\n '喆',\n '爡',\n '轮',\n '棰',\n '鲉',\n '跃',\n '韬',\n '睡',\n '嘧',\n '袅',\n '圗',\n '檄',\n '踊',\n '阀',\n '题',\n '桫',\n '林',\n '沉',\n '禚',\n '散',\n '麇',\n '沦',\n '秋',\n '导',\n '斑',\n '宰',\n '嘞',\n '暑',\n '笱',\n '搋',\n '擅',\n '镤',\n '锶',\n 'L',\n '厣',\n '有',\n '猗',\n '袆',\n '绞',\n '甭',\n '歧',\n '跣',\n '潦',\n '専',\n '绑',\n '飱',\n '廓',\n '磔',\n '接',\n '腓',\n '窎',\n '瑁',\n '飓',\n '蟪',\n '俎',\n 'П',\n '缉',\n '䘵',\n '夙',\n '潟',\n '桷',\n '淡',\n '虺',\n '恶',\n '｜',\n '驭',\n '怀',\n '邋',\n '辢',\n '逻',\n '晖',\n '蜃',\n '蜊',\n '溻',\n '冢',\n '尻',\n '礼',\n '厝',\n '亘',\n '酴',\n '饔',\n '悸',\n '戆',\n '什',\n '玚',\n '馔',\n '哔',\n '沃',\n '竑',\n '葭',\n '垞',\n '鏂',\n '抃',\n '弄',\n '去',\n '焊',\n '焌',\n 'x',\n '苇',\n '與',\n '炼',\n '蛄',\n '莴',\n '阏',\n '薷',\n '禀',\n '鸯',\n '栽',\n '冒',\n '姓',\n '0',\n '尃',\n '蜞',\n '毗',\n '骟',\n '秸',\n '荸',\n '柈',\n '恬',\n '赡',\n '侏',\n '兑',\n '蝤',\n '荷',\n '徳',\n '押',\n '挣',\n '腰',\n '宣',\n '鸵',\n '葳',\n '遘',\n '讨',\n '狒',\n '涿',\n '囤',\n '邃',\n '蒜',\n '疑',\n '脍',\n '嘟',\n '鹠',\n '吻',\n '鄹',\n '耦',\n '华',\n '霸',\n '侥',\n '勒',\n '挞',\n '臊',\n '尺',\n '让',\n '榆',\n '阝',\n '鳚',\n '灾',\n '鲬',\n '艿',\n 'Ⅱ',\n '锩',\n '攮',\n '蚊',\n '蔁',\n '唝',\n '涅',\n '挹',\n '淏',\n '鏊',\n '氵',\n '鹕',\n '律',\n '對',\n '粱',\n '恫',\n '挻',\n '滏',\n '叮',\n '‰',\n '鼯',\n '绫',\n '秉',\n '怩',\n '質',\n '岐',\n '菊',\n '佤',\n '帏',\n '骺',\n '爰',\n '珉',\n '耪',\n '乞',\n '郕',\n '鲱',\n '雷',\n '蒿',\n '不',\n '啐',\n '侓',\n '郓',\n '歼',\n '拒',\n '胗',\n '寕',\n '旒',\n '勁',\n '婢',\n '诌',\n '蹂',\n '姐',\n '媳',\n '歃',\n '拐',\n '辐',\n '拟',\n '醯',\n '雌',\n '点',\n '玟',\n '您',\n '鲨',\n '载',\n '藩',\n '罔',\n '噀',\n '抹',\n '萏',\n '补',\n '蝎',\n '辈',\n '劢',\n '乚',\n '唔',\n '瓜',\n '恿',\n '蟭',\n '涸',\n '纬',\n '睽',\n '樣',\n '帻',\n '蓥',\n '谯',\n '柯',\n '渴',\n '脁',\n '诲',\n '福',\n '③',\n '熊',\n '羌',\n '疴',\n '袖',\n '虿',\n '杏',\n '覌',\n '易',\n '醾',\n '筒',\n '肤',\n '苷',\n '柃',\n '榇',\n '酬',\n '癸',\n '啰',\n '眛',\n '稷',\n '展',\n '鸾',\n '祢',\n '蝾',\n '敵',\n '毛',\n '痦',\n '老',\n '赐',\n '单',\n '淹',\n '畋',\n '符',\n '奎',\n '绥',\n '轾',\n '鄺',\n '濩',\n '眦',\n '觎',\n '忾',\n '璋',\n '刘',\n '翳',\n '菪',\n '簟',\n '胼',\n '孫',\n '機',\n '獻',\n '低',\n 'o',\n '捅',\n '鳥',\n '⑨',\n '卸',\n '废',\n '启',\n '呋',\n '窥',\n '巢',\n '揭',\n '咴',\n '趺',\n '鲥',\n '空',\n '膄',\n '崮',\n '锜',\n '络',\n '納',\n '恤',\n '刭',\n '批',\n '霭',\n '氧',\n '钮',\n '甑',\n '祲',\n '粘',\n '辏',\n '∶',\n '臨',\n '│',\n '粪',\n '惰',\n '肼',\n '浉',\n '橄',\n '5',\n '東',\n '8',\n '漁',\n '浜',\n '忍',\n '奂',\n '遹',\n '扃',\n '扦',\n '入',\n '欤',\n '豆',\n '悠',\n '蕴',\n '萑',\n '媄',\n '龈',\n '÷',\n '磙',\n '鸬',\n '缎',\n '嗯',\n '浕',\n '木',\n '陋',\n '柰',\n '瘩',\n '箨',\n '松',\n '躁',\n '鲇',\n '彰',\n '恕',\n '楗',\n '姨',\n '撅',\n '诹',\n '戮',\n '桓',\n '棉',\n '束',\n '嗍',\n '庋',\n '瞿',\n '郂',\n '哪',\n '町',\n 'ａ',\n '铁',\n '洫',\n '失',\n '栳',\n '篇',\n '鳗',\n '眇',\n '椿',\n '義',\n '就',\n '都',\n '镌',\n '阖',\n '夭',\n '拃',\n '跚',\n '業',\n '圬',\n '演',\n '篥',\n '３',\n '昼',\n '從',\n '瞍',\n '蓦',\n '鼾',\n '坪',\n '觫',\n '鲍',\n '馿',\n '妾',\n '密',\n '奥',\n '耰',\n '佟',\n '嘤',\n '貘',\n '薯',\n '稽',\n '届',\n '褛',\n '钠',\n '猿',\n '佈',\n '倍',\n '铩',\n '铙',\n '踵',\n 'ｏ',\n '捱',\n '鹐',\n '當',\n '狷',\n '写',\n '遆',\n '钱',\n '姗',\n '寸',\n '综',\n '挑',\n '礶',\n '靼',\n '溯',\n '湟',\n '漱',\n '碰',\n '职',\n '味',\n 'Λ',\n '璁',\n '壴',\n '给',\n '碘',\n '恭',\n '苴',\n '酚',\n '套',\n '宕',\n '辽',\n '窀',\n '催',\n '踢',\n '惟',\n '璧',\n '翔',\n '稿',\n '癀',\n '霈',\n '光',\n '膑',\n '妆',\n '庡',\n '圾',\n '躺',\n '惮',\n '切',\n '目',\n '梦',\n '岫',\n '飑',\n '叠',\n '累',\n '鴻',\n '透',\n '量',\n '妻',\n '沨',\n '俪',\n '屣',\n '挚',\n 'w',\n '厅',\n '货',\n '箧',\n '漦',\n '隙',\n '瘥',\n '妃',\n '門',\n '鹦',\n '隳',\n '龆',\n '瞪',\n '跑',\n '帼',\n '刺',\n '起',\n '鞴',\n '岸',\n '渫',\n '莽',\n '髭',\n '耜',\n '瑛',\n '葉',\n '宵',\n '绠',\n '眭',\n '畅',\n '茱',\n '卜',\n '濂',\n '浍',\n '冈',\n '脬',\n '厘',\n '夔',\n '纟',\n '槚',\n '哐',\n '萋',\n '曼',\n '膳',\n '潲',\n '啜',\n '啊',\n '猾',\n '捉',\n '箕',\n '㐂',\n '藝',\n '艘',\n '園',\n '妲',\n '灵',\n '蚌',\n '范',\n '&',\n '疥',\n '陑',\n '洒',\n '唾',\n 'a',\n '婄',\n '谋',\n 'ｔ',\n '唬',\n '宓',\n '瓷',\n '︰',\n '焗',\n '默',\n '噔',\n '菡',\n '恃',\n '亩',\n '边',\n '啟',\n '颞',\n '啬',\n '盟',\n '墩',\n '汭',\n '缝',\n '魇',\n '酡',\n '疗',\n '梾',\n '尾',\n '鹿',\n '锔',\n '溦',\n '酃',\n '囊',\n '掉',\n '罥',\n '报',\n '诤',\n '喹',\n '蕙',\n '割',\n '蠢',\n '兼',\n '俺',\n '升',\n '屦',\n '獠',\n '辣',\n '跹',\n '颧',\n '宪',\n '抬',\n '咿',\n '沲',\n '旗',\n '荩',\n '傒',\n '鳳',\n '變',\n '偈',\n '薹',\n '钭',\n '垧',\n '谪',\n '躐',\n '谀',\n 'R',\n '字',\n '怆',\n '陵',\n '追',\n '迓',\n '舞',\n '卲',\n '捲',\n '麾',\n '税',\n '方',\n '竴',\n '壹',\n '射',\n '轫',\n '塞',\n '僧',\n '椠',\n '突',\n '阕',\n '惫',\n 'U',\n '佞',\n '秒',\n '友',\n '視',\n '莹',\n '攒',\n '荻',\n '俅',\n '筐',\n '能',\n '刓',\n '拍',\n '浥',\n '揽',\n '谨',\n '军',\n '巷',\n '怵',\n '额',\n '恪',\n '荀',\n '糍',\n '湎',\n '褙',\n '觇',\n '效',\n '估',\n '噩',\n '恍',\n '聚',\n '涛',\n '式',\n '兜',\n '汔',\n '祃',\n '銘',\n '烺',\n '瑄',\n '枘',\n '丁',\n '樗',\n '堙',\n '窗',\n '號',\n '鬣',\n '阈',\n '乳',\n '簇',\n '绳',\n '淞',\n ']',\n '征',\n '聩',\n '凸',\n '礓',\n '柘',\n '懂',\n '㧎',\n '纷',\n '里',\n '爸',\n '靥',\n '莞',\n '馅',\n '仞',\n '芏',\n '莳',\n '殪',\n '煌',\n '落',\n '佚',\n '帱',\n '诶',\n '家',\n '将',\n '浯',\n '抿',\n '讫',\n '趸',\n '筢',\n '绩',\n '原',\n '专',\n '滂',\n '嗳',\n '踬',\n '泱',\n '體',\n '蜱',\n '绵',\n '伻',\n '埗',\n '妤',\n '蔺',\n '赳',\n '嘢',\n '梨',\n '鹪',\n '烤',\n '镦',\n '赉',\n '崞',\n '蚰',\n '骝',\n '幅',\n '汴',\n '丽',\n '访',\n '叩',\n '羼',\n '亓',\n '恸',\n '燥',\n '笤',\n '丑',\n '枰',\n '守',\n '蜚',\n '戈',\n '高',\n 'q',\n '瓻',\n '隘',\n 'Ｈ',\n '南',\n '剎',\n '扭',\n '骠',\n '孜',\n '园',\n '锬',\n '审',\n '￥',\n '罚',\n '购',\n '裰',\n '泔',\n '醌',\n '醒',\n '绎',\n '莪',\n '掬',\n '睾',\n '鹁',\n '蛊',\n '票',\n '剃',\n '释',\n '调',\n '黛',\n '撩',\n '篱',\n '茌',\n '敓',\n '蜜',\n '魉',\n '鳤',\n '昽',\n '俳',\n '辁',\n '键',\n '犯',\n '嶙',\n '狈',\n '邬',\n '枋',\n '婊',\n '憎',\n '督',\n '救',\n '措',\n '足',\n '码',\n '栟',\n '虼',\n '棻',\n '阅',\n '肊',\n '坛',\n '鸱',\n '侩',\n '烫',\n '湉',\n '脐',\n '戾',\n '旎',\n '膚',\n '椒',\n '境',\n '绛',\n '濛',\n '蓄',\n '章',\n '压',\n '窦',\n '彖',\n '阜',\n '咻',\n '神',\n '存',\n '诺',\n '課',\n '覺',\n '鲈',\n '渚',\n '「',\n '缢',\n '仓',\n '氅',\n '筇',\n '桴',\n '荥',\n '些',\n '纯',\n '肋',\n '退',\n '妪',\n '别',\n '書',\n '租',\n '嚼',\n '芘',\n '笳',\n '涰',\n '馐',\n '熵',\n '犹',\n '朕',\n '猪',\n '蔸',\n '參',\n '觳',\n '舖',\n '蝙',\n '骏',\n '织',\n '躏',\n '纹',\n '锹',\n '蛉',\n '撑',\n '氽',\n '茶',\n '俛',\n '誠',\n '胖',\n '崽',\n '炫',\n '乘',\n '把',\n '趑',\n '谵',\n '骧',\n '犍',\n '鸮',\n '灌',\n '焯',\n '倭',\n '狁',\n '盱',\n '踱',\n '滠',\n '儡',\n '诸',\n '芽',\n '駆',\n '蹼',\n '虱',\n '祇',\n '\\u3000',\n '蠡',\n '衄',\n '谬',\n '蒍',\n '婺',\n '蘧',\n '博',\n '捍',\n '磁',\n '慷',\n '釂',\n '蛩',\n '钕',\n '祎',\n '呑',\n '贫',\n '斗',\n '菅',\n '操',\n '规',\n '硼',\n '惕',\n '丫',\n '俭',\n '肿',\n '骀',\n '砼',\n '句',\n '茛',\n '闶',\n '钏',\n '饻',\n '圠',\n '萌',\n '魏',\n '铃',\n '摞',\n '┅',\n '伎',\n '獭',\n '田',\n '钴',\n '峭',\n '魅',\n '捋',\n '唼',\n '鹅',\n '祚',\n '嬷',\n '圖',\n '抄',\n '嶂',\n '鸳',\n '溧',\n '钵',\n '嗽',\n '墠',\n '锌',\n '愈',\n '併',\n '踟',\n '羯',\n '翅',\n '纠',\n '勻',\n '岚',\n '菖',\n '便',\n '祈',\n '毳',\n '屹',\n '掰',\n '倬',\n '扛',\n '巴',\n '拮',\n '绁',\n '跌',\n '飯',\n '嵯',\n '翮',\n '堤',\n '诃',\n '腑',\n '皆',\n '鄂',\n '胾',\n '片',\n '这',\n '浙',\n '雨',\n '鼱',\n '袼',\n '鹊',\n '厢',\n '蛣',\n '摇',\n '蛮',\n '揍',\n '⒅',\n '啱',\n '薇',\n '岈',\n '兔',\n '谇',\n '纶',\n '肉',\n '崩',\n '甩',\n '涪',\n '馼',\n '铣',\n '锚',\n '丙',\n '雲',\n '烹',\n '钦',\n '撄',\n '铬',\n '令',\n '虮',\n '湊',\n '禹',\n '抖',\n '喏',\n '旺',\n '畲',\n '戬',\n '嗷',\n '釜',\n '车',\n '缀',\n '玕',\n '谐',\n '啁',\n '怎',\n '下',\n '惑',\n '恅',\n '藿',\n '筰',\n '帐',\n '祸',\n '镝',\n '喵',\n '刁',\n '习',\n '藏',\n '墓',\n '护',\n '聲',\n '箦',\n '严',\n '按',\n '谛',\n '睨',\n '艚',\n '歉',\n '蟮',\n '胶',\n '盍',\n '鳃',\n '狯',\n '垫',\n '杠',\n '线',\n '3',\n '葖',\n 't',\n '熬',\n '虞',\n '嶶',\n '篮',\n '黻',\n '墒',\n '氟',\n '嫠',\n '漕',\n '腾',\n '哟',\n '玫',\n '撇',\n '垍',\n '靛',\n '翼',\n '淅',\n '省',\n '斥',\n '稞',\n '蠼',\n '谩',\n '埠',\n '蘸',\n '刊',\n '烝',\n '宁',\n '鹚',\n '龊',\n '苪',\n '袷',\n '诧',\n '细',\n '蒌',\n '焅',\n '２',\n '筹',\n '扒',\n '卮',\n '捞',\n '净',\n '菲',\n '逮',\n '槍',\n '蛎',\n '莱',\n '黠',\n '逖',\n '辚',\n '剥',\n '啴',\n '诿',\n '楱',\n '氪',\n '领',\n '嗒',\n '藐',\n '惜',\n '甘',\n '佾',\n '嵴',\n '胫',\n ';',\n '晳',\n '锣',\n '瞅',\n '缷',\n '耶',\n '搤',\n '策',\n '咽',\n '邀',\n '霾',\n '悟',\n '属',\n '鸪',\n '牴',\n '贞',\n '趁',\n '丞',\n '瘆',\n '豌',\n '著',\n '饿',\n '筠',\n '划',\n '璇',\n '损',\n '卵',\n '腒',\n '畏',\n '盥',\n '耐',\n '圏',\n '拓',\n '蒙',\n '鋫',\n '劙',\n '蹦',\n '熘',\n '烊',\n '匏',\n '咔',\n '轘',\n '沽',\n '菩',\n '罴',\n '磉',\n '炖',\n '假',\n '枪',\n '龙',\n '俸',\n '焱',\n '四',\n '─',\n '毫',\n '涨',\n '浇',\n '椰',\n '賣',\n '蘇',\n '真',\n '安',\n '坝',\n '枕',\n '鸼',\n '昵',\n '亨',\n '苤',\n '祷',\n '枧',\n '赟',\n '菑',\n '鳂',\n '戌',\n '悄',\n '種',\n '鳢',\n '嗣',\n '電',\n '颥',\n '妯',\n '谟',\n '蜒',\n '训',\n '泍',\n '洁',\n '勇',\n '哿',\n '扰',\n '蟆',\n '螂',\n '刃',\n '絜',\n '曪',\n '乒',\n '湖',\n '鞨',\n '懜',\n '夤',\n '哓',\n '胥',\n '桞',\n '俇',\n '肣',\n '半',\n '于',\n '橼',\n '锑',\n '熙',\n '甜',\n '槌',\n '盾',\n '屃',\n '缗',\n '共',\n '碗',\n '凇',\n '笔',\n '阿',\n '擗',\n '袍',\n '敉',\n '钾',\n '俶',\n '蚪',\n '琤',\n '凱',\n '辕',\n 'à',\n '恣',\n '皴',\n '創',\n '寥',\n '妳',\n '腈',\n '畤',\n '迤',\n '垠',\n '触',\n '趙',\n '铤',\n '逊',\n '羊',\n '碉',\n '锱',\n '骨',\n '仄',\n '斟',\n '俚',\n '啡',\n '芩',\n '迫',\n '杷',\n '种',\n '鹄',\n '牗',\n '耑',\n '艇',\n '芰',\n '整',\n '慙',\n '飛',\n '甓',\n '岩',\n '鸦',\n '黎',\n '僊',\n '糁',\n '谈',\n '洋',\n '椑',\n '健',\n '〕',\n '內',\n '言',\n '掷',\n '倚',\n '姬',\n '矿',\n '灯',\n '阐',\n '凋',\n '銮',\n '豇',\n '瑰',\n '抓',\n '噪',\n '堋',\n '吁',\n '妈',\n '庥',\n '彳',\n '鄗',\n '闩',\n '夫',\n '０',\n '庠',\n '悬',\n '妙',\n '琵',\n '着',\n '首',\n '熣',\n '瞰',\n '揆',\n '燚',\n '条',\n '姜',\n '滘',\n '麓',\n '鳉',\n '椀',\n '蓿',\n '廠',\n '泌',\n '蝈',\n '倕',\n '丛',\n '耍',\n '且',\n '蝇',\n '凉',\n '豐',\n '泪',\n '臼',\n '服',\n '刍',\n '織',\n '渎',\n '尥',\n '甙',\n '埋',\n '珏',\n '援',\n '祖',\n '彊',\n '臱',\n '惦',\n '葴',\n '礁',\n '达',\n '橋',\n '钨',\n '崦',\n '醐',\n '巳',\n '中',\n '颜',\n '溠',\n '铹',\n '负',\n '抠',\n '愎',\n '罘',\n '雩',\n '胝',\n '冱',\n '筵',\n '篙',\n '材',\n '肓',\n '○',\n '迅',\n '腼',\n '橙',\n '仵',\n '茏',\n '慵',\n '齌',\n '琯',\n '疃',\n '貢',\n '豉',\n '瞟',\n '忉',\n '禄',\n '通',\n '咒',\n '愫',\n '秕',\n '筜',\n '觖',\n '州',\n '渑',\n '胆',\n '喑',\n '張',\n '衖',\n '洺',\n '眉',\n '榞',\n '色',\n '邶',\n '攫',\n '堑',\n '淬',\n '嗪',\n '肐',\n '殣',\n '辊',\n '隧',\n '献',\n '潤',\n '蓺',\n '函',\n '鹱',\n '轭',\n '劭',\n '椁',\n '膜',\n '亹',\n '侧',\n '貂',\n '哚',\n '磴',\n '蠋',\n '囔',\n '险',\n '伶',\n '世',\n '菥',\n '莶',\n '瘾',\n '燫',\n '延',\n '∵',\n '毋',\n '羧',\n '无',\n '雎',\n '曛',\n '沚',\n '巍',\n 'g',\n '熄',\n '恰',\n '伷',\n '開',\n '冻',\n '颛',\n '支',\n '⑦',\n '鞥',\n '赖',\n '试',\n '泮',\n '联',\n '沮',\n '穰',\n 'è',\n '峻',\n '滿',\n '豊',\n '刎',\n '鴈',\n '覆',\n '串',\n '锃',\n '春',\n '储',\n '矍',\n '哺',\n '评',\n '猁',\n '愉',\n '疳',\n '閃',\n '奄',\n '甲',\n '墦',\n '頭',\n '锫',\n '俦',\n '玩',\n '搀',\n '砭',\n '流',\n '橇',\n '泅',\n '琇',\n '趣',\n '∧',\n '辑',\n '灊',\n '貴',\n '迮',\n '摹',\n '霄',\n '濟',\n '限',\n '彀',\n '匪',\n '缂',\n '觚',\n '奇',\n '诋',\n '灼',\n '萘',\n '狠',\n '澥',\n '岂',\n '悺',\n '闾',\n '麋',\n '号',\n '槽',\n '姹',\n '陉',\n '瑯',\n '尉',\n 'h',\n '绖',\n '宿',\n '戋',\n '粝',\n '砂',\n '该',\n '鞧',\n '翯',\n '釘',\n '铢',\n '窨',\n '設',\n '⒆']\n\nCHARSET_BETA = ['',\n '笤',\n '谴',\n '膀',\n '荔',\n '佰',\n '电',\n '臁',\n '矍',\n '同',\n '奇',\n '芄',\n '吠',\n '6',\n '曛',\n '荇',\n '砥',\n '蹅',\n '晃',\n '厄',\n '殣',\n 'ｃ',\n '辱',\n '钋',\n '杻',\n '價',\n '眙',\n '鴿',\n '⒄',\n '裙',\n '训',\n '涛',\n '酉',\n '挞',\n '忙',\n '怍',\n '︰',\n '镍',\n '檐',\n '眯',\n '茓',\n '辖',\n '淩',\n '啟',\n '蜀',\n '芟',\n '裟',\n '楝',\n '彘',\n '嶪',\n '费',\n '亞',\n '滁',\n '榉',\n '朝',\n 'f',\n '倻',\n '裎',\n '谧',\n '崂',\n '卑',\n '助',\n '触',\n '氐',\n '锟',\n '铢',\n '膪',\n '脐',\n '渲',\n '荫',\n '佾',\n '琯',\n '钣',\n '珰',\n '翦',\n '膻',\n '娥',\n '浥',\n '淄',\n '猸',\n '内',\n '消',\n '粞',\n '反',\n '苪',\n '冽',\n '酵',\n '玩',\n '父',\n '存',\n '屯',\n '殷',\n '俐',\n '篱',\n '俛',\n '塮',\n '苕',\n '耲',\n '输',\n '壖',\n '溶',\n '琤',\n '氏',\n '真',\n '黩',\n '瑄',\n '阶',\n '茔',\n '眩',\n '浙',\n '痄',\n '噔',\n '烤',\n '楯',\n '²',\n '铆',\n '裈',\n '偬',\n '盏',\n '祐',\n '伯',\n '庙',\n '獯',\n '榀',\n '裒',\n '综',\n '蒸',\n '架',\n '蜱',\n '鹖',\n '涴',\n '肌',\n '廖',\n '祾',\n '蔗',\n '破',\n '!',\n '鑫',\n '瓷',\n 'Ｈ',\n '宛',\n '倪',\n '贝',\n '酝',\n '倞',\n '榼',\n '菊',\n '帕',\n '胍',\n '淌',\n '抨',\n '倕',\n '味',\n '独',\n 'à',\n '庐',\n '蹲',\n '肸',\n '洹',\n '騳',\n '绖',\n '觉',\n '蝙',\n '铜',\n '選',\n '郚',\n '奄',\n '手',\n '篦',\n '忮',\n '潺',\n '歁',\n '湖',\n '貔',\n '缚',\n '癫',\n '捣',\n '翎',\n '勇',\n '徒',\n '杪',\n '捃',\n '纴',\n '郞',\n '蛱',\n '浓',\n '講',\n '薇',\n '汊',\n '彻',\n '琖',\n '觇',\n '驩',\n '野',\n '闺',\n '彩',\n '膊',\n '簸',\n '瑭',\n '龏',\n '栓',\n '攸',\n '堕',\n '鹿',\n '檠',\n '锽',\n '晟',\n '煊',\n '衖',\n 'p',\n 'L',\n '侞',\n '吹',\n '岵',\n '捡',\n '邃',\n '曩',\n '泼',\n '娌',\n '磙',\n '鞮',\n '號',\n '苤',\n '骁',\n '感',\n '氙',\n '榜',\n '菟',\n '蠲',\n '∶',\n '焌',\n '漯',\n '胪',\n '以',\n '剜',\n '=',\n '衰',\n '剔',\n '疏',\n '韩',\n '邋',\n '探',\n '搌',\n '握',\n '舵',\n '腰',\n '咐',\n '郎',\n '鈺',\n '赴',\n '斩',\n '铥',\n '棂',\n '褫',\n '秾',\n '城',\n '葬',\n '缺',\n '甓',\n '沙',\n '鴨',\n '恧',\n '吩',\n '膈',\n '俗',\n '引',\n '濑',\n '坛',\n '蛘',\n '谍',\n '飘',\n '鎚',\n '貋',\n '袅',\n '圃',\n '肽',\n '祖',\n '瑢',\n '鄣',\n '卡',\n '恸',\n '饷',\n '撖',\n '阖',\n '碌',\n '墉',\n '⇋',\n '抗',\n '僇',\n '撩',\n '狷',\n '静',\n '荽',\n '憯',\n '虻',\n '滹',\n '簧',\n 'Y',\n '汾',\n '嫁',\n '蚴',\n '岈',\n '榔',\n '邶',\n '挛',\n '火',\n 'w',\n '旌',\n '線',\n '3',\n '跏',\n 'F',\n '楸',\n '瞬',\n '證',\n '現',\n '符',\n '鲀',\n '窸',\n '朗',\n 'm',\n '劉',\n '襄',\n '鸻',\n '敖',\n '憩',\n '濛',\n '胶',\n '雏',\n '禽',\n '缜',\n '鐀',\n '澄',\n '泉',\n '懈',\n '鹟',\n '牙',\n '叟',\n '镖',\n '膨',\n '硷',\n '钏',\n '嵌',\n '冲',\n '橪',\n '厨',\n '溘',\n '妻',\n '贺',\n '耀',\n '潲',\n '瞳',\n '惺',\n '涑',\n '鄄',\n '舡',\n '战',\n '钹',\n '盍',\n '窀',\n '凳',\n '锋',\n '（',\n '绤',\n '翻',\n '》',\n '嶷',\n '戛',\n '照',\n '设',\n '两',\n '霹',\n '風',\n '格',\n '栖',\n '椹',\n '№',\n '蔌',\n '达',\n '悠',\n '旒',\n '函',\n '抔',\n '逆',\n '疙',\n '玫',\n '箢',\n '恩',\n '樘',\n '远',\n '考',\n '荭',\n '殒',\n '靡',\n '蝾',\n '舅',\n '䀲',\n '偾',\n '灿',\n '埴',\n '瀍',\n '特',\n '诸',\n '搦',\n '恒',\n '妊',\n '课',\n '劂',\n '殊',\n '艋',\n '柚',\n '硕',\n '捅',\n '钍',\n '芘',\n '脖',\n '襁',\n '募',\n '卅',\n '疆',\n '嫖',\n '黹',\n '臀',\n '豇',\n '瘗',\n '憎',\n '嗯',\n 'Θ',\n '跺',\n '喧',\n '捺',\n '爪',\n '鲠',\n '縠',\n '屋',\n '撑',\n '者',\n '娶',\n '喝',\n '墼',\n '丶',\n '茚',\n '髅',\n '瓢',\n '农',\n '橼',\n '攰',\n '折',\n '诋',\n '镒',\n '赂',\n '捲',\n '耑',\n '沐',\n '窜',\n '亰',\n '煌',\n '阕',\n '羯',\n '纤',\n '滇',\n '值',\n '琥',\n '渴',\n '祗',\n '鳌',\n '蛞',\n '庄',\n '鹇',\n '訄',\n '犷',\n '弋',\n '琐',\n '佗',\n '氛',\n '揄',\n '旺',\n '聱',\n '榨',\n '湿',\n '蟥',\n '湎',\n '敕',\n '轷',\n '耿',\n '三',\n '運',\n '瑶',\n '困',\n '勁',\n '蚱',\n '泸',\n '螫',\n '斜',\n '蟠',\n '轨',\n '镞',\n '霆',\n '嶙',\n '烷',\n '瘩',\n '敦',\n '塾',\n '僚',\n '澙',\n '關',\n '酩',\n '殴',\n '—',\n '例',\n '筷',\n '乘',\n '颗',\n '核',\n '孬',\n '舣',\n '糇',\n '劾',\n '黧',\n '镌',\n '罅',\n 'X',\n '仅',\n '哐',\n '蟊',\n '呻',\n '呕',\n '粟',\n '配',\n '伊',\n '槊',\n '昌',\n '宰',\n '盘',\n '肫',\n '鳥',\n '圾',\n '恬',\n '辘',\n '绿',\n '時',\n '丐',\n '扃',\n '敓',\n '摄',\n '陕',\n '滿',\n '鹆',\n '嗬',\n '龅',\n '渣',\n '釣',\n '萦',\n '督',\n '孑',\n '∧',\n '疥',\n '噱',\n '蝎',\n '君',\n '笮',\n '泌',\n '镔',\n '称',\n '柘',\n '鬣',\n '罨',\n '潍',\n '垣',\n '顔',\n '褶',\n '礓',\n '△',\n '骐',\n '湍',\n '獾',\n '羖',\n '戾',\n '预',\n '祭',\n '鹨',\n '凤',\n '茕',\n '珏',\n '蛊',\n '毛',\n '枰',\n '鄭',\n '娲',\n '丕',\n '蜜',\n '纟',\n '蛹',\n '粮',\n '嚰',\n '嚓',\n '螨',\n '裰',\n 'G',\n '集',\n '删',\n '郜',\n '舻',\n '嵛',\n '鵰',\n '腊',\n '峄',\n '脸',\n '鲺',\n '坢',\n '寞',\n '撰',\n '顸',\n '枋',\n '荠',\n '夡',\n '豆',\n '馆',\n '赭',\n '傎',\n '淼',\n '镪',\n '許',\n '礌',\n '带',\n '訂',\n '饧',\n '锜',\n '及',\n '漾',\n '編',\n '究',\n '仍',\n '糜',\n '喳',\n '嗝',\n '醦',\n '堅',\n '企',\n '烔',\n '图',\n '垲',\n '枥',\n '畿',\n '踱',\n '槟',\n '◆',\n '酽',\n '溢',\n '酥',\n '谚',\n '缨',\n '死',\n '镑',\n '干',\n '用',\n '紊',\n '坑',\n '副',\n '枭',\n '琮',\n '鸨',\n '獻',\n '弈',\n '伺',\n '醍',\n '氓',\n '宁',\n '臻',\n '贾',\n '啐',\n '玉',\n '咀',\n '孀',\n '烆',\n '嘱',\n '频',\n '蜥',\n '楡',\n '瞩',\n '委',\n '锺',\n '赀',\n '睬',\n '旅',\n '刿',\n '韪',\n '抹',\n '鞘',\n 'x',\n '钝',\n '倌',\n '奖',\n '蟭',\n '灌',\n '肼',\n '曰',\n '啊',\n '属',\n '唐',\n '彦',\n '煦',\n '鄘',\n '坦',\n '鬻',\n '告',\n '单',\n '菽',\n '匏',\n '浚',\n '仺',\n '怜',\n '拦',\n '鸡',\n '拄',\n '乍',\n '燠',\n '暧',\n '竭',\n '⒂',\n '济',\n 'Ⓡ',\n '趑',\n '舴',\n '体',\n '拒',\n '罂',\n '说',\n '猎',\n '闫',\n '鄗',\n '妲',\n '鑙',\n '葶',\n '匍',\n '等',\n '略',\n '盲',\n '唔',\n '钰',\n '渠',\n '镦',\n '葫',\n '蹒',\n '姘',\n '婵',\n '夯',\n '实',\n '何',\n '株',\n '锌',\n '礁',\n '桺',\n '捉',\n '鮕',\n '莓',\n '轶',\n '辉',\n '溋',\n '视',\n '嗒',\n '猞',\n '猁',\n '杓',\n '怡',\n '咴',\n '巷',\n '仂',\n '婉',\n '睛',\n '？',\n '淡',\n '/',\n '郛',\n '绨',\n '较',\n '毁',\n '沓',\n '瞎',\n '馏',\n '蕙',\n '戏',\n 'i',\n '董',\n '臣',\n '鹫',\n '栳',\n '锹',\n '裕',\n '蜷',\n '唣',\n '９',\n '缂',\n '螬',\n '笥',\n '惶',\n '蚰',\n '徨',\n '忭',\n '传',\n '绛',\n '离',\n '锑',\n '候',\n '拓',\n '德',\n '损',\n '附',\n '紡',\n '徕',\n '錾',\n '蕻',\n '⑧',\n '構',\n '镊',\n '脘',\n '靸',\n '涒',\n '镡',\n '光',\n '廒',\n '尴',\n '荥',\n '佳',\n '弼',\n '暮',\n '榆',\n '鼑',\n '辅',\n '钆',\n '湝',\n '佤',\n '瘌',\n '炽',\n '筰',\n '嗈',\n '電',\n '飙',\n '坶',\n '椿',\n '俾',\n '灊',\n '泵',\n '像',\n '咅',\n '樓',\n '苒',\n '烨',\n '溺',\n '棽',\n '戒',\n '箅',\n '愔',\n '缢',\n '楞',\n '庤',\n '塑',\n '湮',\n '沽',\n '蝌',\n '赌',\n '薨',\n '锾',\n '圜',\n '骥',\n '秉',\n '瞌',\n '惇',\n '诊',\n '圣',\n '睢',\n '我',\n '廰',\n '苠',\n '襻',\n '鲚',\n '酮',\n '厮',\n '评',\n '沈',\n '愀',\n '垞',\n '习',\n '敷',\n '比',\n '欢',\n '尚',\n '钪',\n '卣',\n '她',\n ',',\n '伴',\n '赃',\n '蚬',\n '喇',\n '醇',\n '嚅',\n 'T',\n '姝',\n '鍊',\n '悯',\n 'N',\n '抚',\n '颡',\n '獐',\n '趟',\n '洑',\n '缝',\n '喁',\n '帷',\n '憷',\n '获',\n '阉',\n '镫',\n '臨',\n '炮',\n '奴',\n '揩',\n '叩',\n '恺',\n '粱',\n '胁',\n '憬',\n '痿',\n '´',\n '沘',\n '彀',\n '饩',\n '滋',\n '竑',\n '嗑',\n '鸟',\n 'Ｔ',\n '璠',\n '快',\n '銀',\n '舶',\n '羞',\n '桞',\n '飛',\n '茹',\n '師',\n '偌',\n '節',\n '冁',\n '叡',\n '臑',\n '踔',\n '酔',\n '養',\n '溦',\n '岐',\n '豉',\n '杌',\n '胩',\n '仳',\n '沾',\n '窑',\n '曳',\n '闷',\n '垢',\n '垆',\n '磨',\n '髹',\n '態',\n '丽',\n '見',\n '洃',\n '遣',\n '场',\n '铭',\n '溉',\n '衬',\n '橦',\n '详',\n '馊',\n '濂',\n '瑾',\n '鲫',\n '贞',\n '搴',\n '胺',\n ' ',\n '景',\n '执',\n '袴',\n '炖',\n '箭',\n '楂',\n '婚',\n '镧',\n '厩',\n '宣',\n '缣',\n '跃',\n '痘',\n '亓',\n '宦',\n '豪',\n '侣',\n '郧',\n '與',\n '痳',\n '挚',\n '殻',\n '嘢',\n '洽',\n '蹉',\n '孽',\n '森',\n '俚',\n '八',\n '砹',\n '凹',\n '訇',\n '屹',\n '啰',\n '宴',\n '廨',\n '沇',\n '麇',\n '泅',\n '绡',\n '辛',\n '鹲',\n '鋆',\n '旮',\n '婀',\n '幔',\n '赞',\n '：',\n '永',\n '活',\n '萸',\n '霉',\n '←',\n '媲',\n '阚',\n '鲮',\n '佝',\n '獒',\n '圹',\n '隋',\n '征',\n '蚶',\n '龊',\n '搀',\n '嫫',\n '鬏',\n '幞',\n '學',\n '然',\n '沧',\n '萑',\n '襜',\n '撻',\n '苯',\n '狳',\n '鞠',\n '咋',\n '壹',\n '栅',\n '款',\n '镘',\n '阳',\n '蚜',\n '荬',\n '糊',\n '疳',\n '糕',\n '镵',\n '寐',\n '褴',\n 'v',\n '醋',\n '诀',\n '汰',\n '啸',\n '备',\n '娘',\n '氚',\n '镓',\n '室',\n '簟',\n '硝',\n '嘌',\n '釐',\n '争',\n '男',\n '疬',\n '鹄',\n '艳',\n '倒',\n '忸',\n '庶',\n '葒',\n '岖',\n '涨',\n '羝',\n '诼',\n '纨',\n '纰',\n '扉',\n '酎',\n '藉',\n '疮',\n '枞',\n '黜',\n '戮',\n '芽',\n '鳑',\n '末',\n '蒿',\n '茈',\n '透',\n '渊',\n '秷',\n '〈',\n '试',\n '络',\n '羼',\n '滪',\n '奋',\n '虏',\n '脁',\n '沫',\n '蓰',\n '襆',\n '披',\n '鲌',\n '艚',\n '逹',\n '炳',\n '泔',\n '叹',\n '轳',\n '锵',\n '嫜',\n '佥',\n '严',\n '迅',\n '筠',\n '逵',\n '铿',\n '钇',\n '拇',\n '诏',\n '绯',\n '吊',\n '纠',\n '蟾',\n 'c',\n '涝',\n '汩',\n '盐',\n '跋',\n '拤',\n '邹',\n '镨',\n '羚',\n '龆',\n '脊',\n '攉',\n '傕',\n '短',\n '團',\n '蹬',\n '嘤',\n '奎',\n '熨',\n '芪',\n '鸢',\n '濉',\n \"''\",\n '莴',\n '義',\n '赜',\n '踺',\n '皂',\n '努',\n '偏',\n '狡',\n '遭',\n '吞',\n '嘿',\n '婊',\n '媸',\n '增',\n '殿',\n '刮',\n '燘',\n '劫',\n '娜',\n '瞄',\n '寡',\n '优',\n '捋',\n '佴',\n '菰',\n '蓠',\n '笙',\n '镃',\n '樇',\n '瘫',\n 'B',\n '橇',\n '逯',\n '堍',\n 'О',\n '磐',\n '腼',\n 'て',\n '送',\n '狭',\n '皓',\n '亡',\n '嗉',\n '菠',\n '顺',\n '連',\n '嶶',\n '瑪',\n '辟',\n '婷',\n '牛',\n '笫',\n '窅',\n '萁',\n '戟',\n '覃',\n '馍',\n '建',\n '謇',\n '旘',\n '镣',\n '燏',\n '葉',\n '轺',\n '倏',\n '堪',\n '见',\n '葛',\n '钕',\n '键',\n '押',\n '僊',\n '槐',\n '戎',\n '窨',\n '洙',\n '鲢',\n '鞒',\n '慒',\n '雁',\n '圭',\n 'Ｄ',\n '陌',\n '肱',\n '蜿',\n '洧',\n '惑',\n '祛',\n '樟',\n '矧',\n '呵',\n '峻',\n '凝',\n '蕨',\n '拯',\n '珮',\n '塥',\n '展',\n '贻',\n '囐',\n '弱',\n '庳',\n '嫔',\n '緣',\n '呈',\n '策',\n '漉',\n '瑗',\n '鲂',\n '鹂',\n '吾',\n '灶',\n '并',\n '挲',\n '重',\n '奭',\n '皙',\n '侪',\n '埗',\n '烬',\n '纾',\n '椒',\n '技',\n 'ɔ',\n '擀',\n '恍',\n '遨',\n '订',\n '雨',\n '卵',\n '锏',\n '猗',\n '癸',\n '）',\n '谡',\n '稷',\n '枨',\n '蹽',\n '荑',\n '沅',\n '稽',\n '間',\n '冉',\n '颇',\n '酺',\n '份',\n '瞾',\n '毯',\n '藥',\n '蕞',\n '狲',\n '吡',\n '慷',\n '卯',\n '摽',\n '肿',\n '嗛',\n '悒',\n '丨',\n '横',\n '鳡',\n '仫',\n '狎',\n '砗',\n '聿',\n '腥',\n '酡',\n '飱',\n '柳',\n '遽',\n '汇',\n '湔',\n '麋',\n '垃',\n '粽',\n '坷',\n '鳗',\n '迫',\n '丢',\n '\"',\n '⒀',\n '嗲',\n '肐',\n '結',\n '署',\n '飨',\n '蠡',\n '涩',\n '挈',\n '浿',\n '鐾',\n '姞',\n '隧',\n '铘',\n '呜',\n '蜕',\n '鷄',\n '逼',\n '哌',\n '病',\n '係',\n '偿',\n 'Ⅲ',\n '埋',\n '妤',\n '赘',\n '悉',\n '陷',\n '沸',\n '呲',\n '誓',\n '舆',\n '髀',\n '挫',\n '羑',\n '据',\n '顿',\n '淝',\n '抟',\n '珧',\n '郑',\n '仗',\n '怛',\n '掠',\n '稳',\n '尥',\n '祙',\n '找',\n '郐',\n '锔',\n '轹',\n '钓',\n '黙',\n '饸',\n '谌',\n '斐',\n '龙',\n '噫',\n '駆',\n '浼',\n '峒',\n '育',\n '纣',\n '溠',\n '铊',\n '亨',\n '杮',\n '呓',\n '钌',\n '业',\n '繻',\n '溪',\n '戌',\n '蓿',\n '椱',\n '悱',\n '仉',\n '阮',\n '芈',\n '濋',\n '搔',\n '纽',\n '琛',\n '趄',\n '双',\n '镯',\n '☆',\n '敉',\n '啬',\n '讦',\n '娱',\n '爾',\n '遶',\n '漱',\n '郗',\n '锪',\n '颃',\n '靰',\n '醊',\n '驊',\n '呢',\n '術',\n '妙',\n '蚣',\n '溽',\n '酇',\n '巾',\n '舐',\n '却',\n '废',\n '邾',\n '砣',\n '乙',\n '鲜',\n '蒤',\n '囍',\n '璈',\n '稔',\n '蘘',\n '匐',\n '業',\n '碟',\n '渺',\n '贤',\n '绋',\n '畑',\n '颞',\n '侥',\n '盟',\n '鼍',\n '阊',\n '蔽',\n '标',\n '吮',\n '淬',\n '鏾',\n '圗',\n '夜',\n '乕',\n '娇',\n '瞿',\n '循',\n '讲',\n '懒',\n '熘',\n '禚',\n '观',\n '钷',\n '万',\n 'n',\n '未',\n '藝',\n '愿',\n '圈',\n '浩',\n '伦',\n '扛',\n '暄',\n '饶',\n '梧',\n '欣',\n '咿',\n '檔',\n '吼',\n '妮',\n '覆',\n '辰',\n '誤',\n '允',\n '危',\n '硗',\n '惫',\n '瘪',\n '李',\n '焱',\n '沣',\n '坯',\n '穄',\n '归',\n '画',\n '营',\n ':',\n '色',\n '哔',\n '矢',\n '巯',\n '祆',\n '傍',\n '享',\n '悻',\n '取',\n '凫',\n '铒',\n '唅',\n '眈',\n '疹',\n '败',\n '晴',\n '顼',\n '绶',\n '剃',\n '斗',\n '禾',\n '４',\n '誜',\n '俨',\n '２',\n '患',\n '结',\n '可',\n '帇',\n '抍',\n '筝',\n '衢',\n '鹛',\n '跸',\n '颢',\n '钾',\n '渡',\n '棒',\n '丛',\n '皱',\n '梓',\n '将',\n '压',\n '#',\n '岛',\n '?',\n '砺',\n '过',\n '党',\n '挣',\n '瞋',\n '谶',\n '妯',\n '羡',\n '化',\n '淫',\n '歪',\n '鼗',\n '阄',\n '蔓',\n '烩',\n '餘',\n '猊',\n '．',\n '畯',\n '祧',\n '狒',\n '碁',\n '咛',\n '鲈',\n '叨',\n '哞',\n '５',\n '娈',\n '半',\n '免',\n '拿',\n '畎',\n '媾',\n '棚',\n '丈',\n '周',\n '匋',\n '酯',\n '奚',\n '爇',\n '摇',\n '搭',\n '蓇',\n '陽',\n '岢',\n '禤',\n '藠',\n '雅',\n '哲',\n '弹',\n '按',\n '↑',\n '蹀',\n '察',\n '螾',\n '渎',\n '褂',\n '觳',\n '耍',\n '皲',\n '骗',\n '箫',\n '蕺',\n '亚',\n '保',\n '棵',\n '放',\n '踪',\n '了',\n '熣',\n '亦',\n '痛',\n '币',\n '馐',\n '夢',\n '诱',\n '梱',\n '鲰',\n '郕',\n '璜',\n '祯',\n '颦',\n '走',\n '踣',\n '嫚',\n '旯',\n '雲',\n '湟',\n '墨',\n '笃',\n '肇',\n '撝',\n '腦',\n '账',\n '舞',\n '⑨',\n '噻',\n '幂',\n '僵',\n '崦',\n '’',\n '牢',\n '号',\n '嫡',\n '囱',\n '肥',\n '代',\n '锶',\n '掏',\n '随',\n '棓',\n '殉',\n '嘅',\n '掰',\n '功',\n '垛',\n '踶',\n '娠',\n '霜',\n '碣',\n '鲼',\n '伉',\n '凄',\n '骋',\n '鹞',\n '洺',\n '乌',\n '赧',\n '瑛',\n '黎',\n '曚',\n '鲴',\n '髫',\n '瘴',\n '藏',\n '雍',\n '畐',\n '蔻',\n '爼',\n '蹴',\n '巨',\n '贱',\n '汜',\n '胡',\n '虬',\n '椎',\n '逸',\n '魇',\n '亶',\n 'Φ',\n '忆',\n '赉',\n '塞',\n '潢',\n '垌',\n '简',\n '鼹',\n '發',\n '枢',\n '麝',\n '虹',\n '惭',\n '唛',\n '春',\n '瑟',\n '郰',\n '桡',\n '捩',\n '堙',\n '嗨',\n '驳',\n 'Ｆ',\n '荪',\n '忑',\n '贪',\n '躅',\n '步',\n '揜',\n '闪',\n '垟',\n '晶',\n '分',\n '韭',\n '戴',\n '泪',\n '啧',\n '機',\n '峙',\n '和',\n '鸱',\n '绎',\n '屠',\n '阋',\n '黍',\n '淸',\n '萩',\n '汉',\n '吐',\n '匙',\n '铗',\n '蠔',\n '簠',\n '鲵',\n '须',\n '蛣',\n '躏',\n '完',\n '咻',\n '釜',\n '馼',\n '崤',\n '欻',\n '珐',\n '于',\n '郅',\n '焓',\n '轴',\n '递',\n '堰',\n '嗷',\n '儇',\n '壕',\n '嘟',\n '酸',\n '庾',\n '龂',\n '妍',\n '锅',\n '雳',\n '桦',\n '抬',\n '谄',\n '气',\n '六',\n '诎',\n '绀',\n '张',\n '復',\n '客',\n '荞',\n '鳚',\n '衔',\n '亁',\n '昂',\n '漤',\n '鞚',\n '筘',\n '绫',\n '彝',\n '枪',\n '苊',\n '榟',\n '饺',\n '苦',\n '顶',\n '衷',\n '聚',\n '寮',\n '揆',\n '轪',\n '栋',\n '臂',\n '葖',\n '颋',\n '镐',\n '愕',\n '贸',\n 'Q',\n '琼',\n '糥',\n '世',\n '莪',\n '龁',\n '禁',\n '绲',\n '陶',\n '弑',\n '黢',\n '铵',\n '睐',\n '沄',\n '紬',\n '防',\n '癣',\n '曾',\n '钉',\n '纶',\n '膘',\n '句',\n '莸',\n '踝',\n '躐',\n '酤',\n '腑',\n '雄',\n '堤',\n '喀',\n '姣',\n '孢',\n '阡',\n '褐',\n '胂',\n '髙',\n ';',\n '骖',\n '膺',\n '糙',\n '辢',\n '⒃',\n '险',\n '砻',\n '缫',\n '骎',\n '低',\n '蚵',\n '箐',\n '苞',\n '劭',\n '峪',\n '工',\n '盈',\n '腹',\n '袄',\n '祉',\n '癔',\n '笨',\n 'Ｒ',\n '乚',\n '畏',\n '虍',\n '臾',\n '泛',\n '噙',\n '杷',\n '麗',\n '蹋',\n '逍',\n '迓',\n '摅',\n '页',\n '戥',\n '胞',\n '艄',\n '壅',\n '啶',\n '趼',\n '牟',\n '翙',\n '蓝',\n '府',\n '轿',\n '砼',\n '荜',\n '杆',\n '惊',\n '起',\n '瘅',\n '墈',\n '氖',\n '匀',\n '麃',\n '阘',\n '虮',\n '蘇',\n '蚤',\n '汗',\n '鳞',\n '籁',\n '缲',\n '畈',\n '亟',\n '劬',\n '課',\n '蓄',\n '缅',\n '楮',\n '湜',\n '珩',\n '斋',\n '塬',\n '殁',\n '魃',\n '脞',\n 'H',\n '澼',\n '钚',\n '饕',\n '缕',\n 'Ⅱ',\n '攮',\n '卿',\n '莅',\n '镆',\n '熹',\n '藩',\n '汁',\n '順',\n '趿',\n '拆',\n '蟹',\n '砒',\n '惴',\n '㎡',\n '忖',\n '寝',\n '戕',\n '螭',\n '酿',\n '™',\n '柬',\n '枧',\n '凶',\n '蚁',\n '島',\n '殄',\n '鲊',\n '忠',\n '肉',\n '辕',\n '叫',\n '徙',\n '漆',\n '缞',\n '夀',\n '楦',\n '佪',\n '兴',\n '粉',\n '裳',\n '蘧',\n '國',\n '旬',\n '看',\n 'Ⅰ',\n '剑',\n '痭',\n '襟',\n '恐',\n '遹',\n '◎',\n '窃',\n '穰',\n '澎',\n '敬',\n '旱',\n '燚',\n '坩',\n '彤',\n '尜',\n '猃',\n '夏',\n '穈',\n '媒',\n '柑',\n '駡',\n '孛',\n '脉',\n '车',\n '零',\n '菩',\n '痊',\n '卉',\n '桔',\n '距',\n '吧',\n '漦',\n '启',\n '仁',\n '滬',\n '馋',\n '帅',\n '鳈',\n '鄌',\n '超',\n '芡',\n '窘',\n '刽',\n '掌',\n '氤',\n '梽',\n '拎',\n '踏',\n '勋',\n '甍',\n '玑',\n '稱',\n '鞍',\n '浍',\n '翅',\n '饟',\n '鼎',\n '罩',\n '加',\n '虚',\n '蕰',\n '簉',\n '堇',\n '巢',\n '疲',\n '蟑',\n '狝',\n '瓮',\n '潋',\n '行',\n '饥',\n '散',\n '糌',\n '牵',\n '貢',\n '偉',\n '咄',\n '痕',\n '沃',\n '苓',\n '锂',\n '狻',\n '褿',\n '畸',\n '姿',\n '煎',\n '胜',\n '觅',\n '烊',\n '質',\n '疵',\n '擢',\n '椤',\n '米',\n '累',\n '诳',\n '斡',\n 'K',\n '恻',\n '匦',\n '烫',\n '湾',\n '鹎',\n '吟',\n '摘',\n '涞',\n '恿',\n '嫉',\n '炎',\n '婧',\n '朽',\n '铑',\n 'ㆍ',\n '讧',\n '曜',\n '挑',\n '〇',\n '搅',\n '鹐',\n '丁',\n '彼',\n '棠',\n '饪',\n '箬',\n '祎',\n '魄',\n '囿',\n '犬',\n '市',\n '髃',\n '勚',\n '桶',\n '辎',\n '瓞',\n '财',\n '缄',\n '園',\n '睒',\n '护',\n '尿',\n '融',\n '围',\n '水',\n '糍',\n '虢',\n '呦',\n '越',\n '棺',\n '砮',\n '邓',\n '鹦',\n '稣',\n '呃',\n '柙',\n '鎌',\n '转',\n '袋',\n '湉',\n '亘',\n '俩',\n '腆',\n '谣',\n '飔',\n '撂',\n '鄳',\n '爲',\n '盦',\n '谳',\n '卸',\n 'W',\n '嚆',\n '婕',\n '卫',\n '拚',\n '呀',\n '汽',\n '洣',\n '冻',\n '鳝',\n '录',\n '毋',\n '閥',\n '熬',\n '谜',\n '齐',\n '匳',\n '慧',\n '猴',\n '撬',\n '妳',\n '諾',\n '蠼',\n '瘟',\n '伐',\n '颤',\n '奶',\n '陧',\n '麾',\n '岌',\n '浇',\n '邸',\n '「',\n '不',\n '哼',\n '热',\n '旳',\n '慙',\n '＆',\n '苔',\n '郿',\n '钗',\n '氡',\n '纹',\n '侬',\n '霓',\n '靈',\n '扁',\n '聢',\n '疼',\n '岣',\n '甥',\n '恭',\n '喷',\n '芫',\n '骂',\n '肪',\n '熥',\n '揠',\n '鲷',\n '遁',\n '霎',\n '娆',\n '圩',\n '爬',\n '傲',\n '贽',\n '紫',\n '觑',\n '琇',\n '蟆',\n '怙',\n '玙',\n '庼',\n '筮',\n '慗',\n '层',\n '娓',\n '蚨',\n '糟',\n '璩',\n '隼',\n '锧',\n '疱',\n '铎',\n '祠',\n '绁',\n '速',\n '湛',\n '蝮',\n '立',\n '媵',\n '禇',\n '撸',\n '禳',\n '>',\n '恋',\n '⑥',\n '鹡',\n '蓑',\n '樱',\n '奸',\n '蝣',\n '埭',\n '聪',\n '慭',\n '睑',\n '肢',\n '焗',\n '骃',\n '毵',\n '潼',\n '塘',\n '烧',\n '劓',\n '栾',\n '牯',\n '〉',\n '毓',\n '釉',\n '庞',\n '宕',\n '磚',\n '夺',\n '畜',\n '俏',\n '筼',\n '虱',\n '釆',\n '计',\n '陀',\n '诧',\n '臱',\n '牌',\n '固',\n '鹉',\n '凰',\n '擞',\n '■',\n '㛃',\n '词',\n '店',\n '當',\n '许',\n '妣',\n '耋',\n '硼',\n '根',\n '焅',\n '砸',\n '霈',\n '锃',\n '巳',\n '誉',\n '咕',\n '锊',\n 'P',\n '云',\n '乞',\n '为',\n '姆',\n '桕',\n '丞',\n '鳤',\n '楷',\n '醒',\n '趔',\n '怔',\n '砉',\n '潏',\n '肝',\n '拷',\n '也',\n '璐',\n '厘',\n '致',\n '昇',\n '绥',\n '抃',\n '佩',\n '斥',\n '⑶',\n '断',\n '纵',\n '翁',\n '耄',\n '沭',\n '洄',\n '别',\n '吻',\n '渍',\n 'r',\n '愦',\n '替',\n '骓',\n '攻',\n '旦',\n '来',\n '案',\n '坫',\n '辞',\n '班',\n '锝',\n '拜',\n '掎',\n '穸',\n '笛',\n '痂',\n '笈',\n '鲶',\n '僻',\n '依',\n '碎',\n '蕤',\n '炕',\n '寥',\n '拔',\n '髑',\n '慨',\n '眺',\n '⑿',\n '珞',\n '歧',\n '湲',\n '錦',\n '拮',\n '哭',\n '爰',\n '验',\n '寸',\n '%',\n '口',\n '阔',\n '积',\n '篝',\n '狴',\n '殂',\n '痧',\n '绽',\n '搪',\n '祸',\n '缘',\n '遯',\n '祜',\n '种',\n '缓',\n '冒',\n '庵',\n '窥',\n '颂',\n '哕',\n '谘',\n '蜗',\n '掖',\n '驮',\n '郎',\n '跂',\n '蝓',\n '贲',\n '馔',\n '琰',\n '大',\n '芊',\n '粝',\n '啻',\n '蒉',\n '谒',\n '羔',\n '蘑',\n '菑',\n '布',\n '徂',\n 'l',\n '炬',\n '蘩',\n '弭',\n '嵎',\n '補',\n '岑',\n '佯',\n '棍',\n '没',\n '志',\n '裣',\n '咸',\n '权',\n '豺',\n '韦',\n '優',\n '紧',\n '嚚',\n '牴',\n '酚',\n '沤',\n '睥',\n '葆',\n '乓',\n '划',\n '犒',\n '惚',\n '埕',\n '锴',\n '就',\n '滓',\n '汕',\n '冏',\n '缵',\n '囟',\n '旸',\n '麂',\n '接',\n '餮',\n '瓤',\n '偕',\n '灏',\n '溻',\n '揶',\n '钯',\n '荸',\n '宪',\n '泠',\n '槠',\n '抺',\n '威',\n '燴',\n '井',\n '骣',\n '耜',\n '磔',\n '懜',\n '淇',\n '瘘',\n '蹼',\n '觏',\n '圬',\n '纔',\n '恤',\n '铝',\n '薏',\n '鞫',\n '衉',\n 'Ｅ',\n '球',\n '姽',\n '毹',\n '嵘',\n '睦',\n '蛉',\n '伽',\n '橥',\n '痤',\n '卞',\n '警',\n '则',\n '芬',\n '磉',\n '悢',\n '逾',\n '吆',\n '朿',\n '锒',\n '卧',\n 'E',\n '焉',\n '纥',\n '髦',\n '鞯',\n '牞',\n '蹿',\n '琪',\n '洌',\n '幛',\n '淳',\n '菲',\n '涔',\n '噗',\n '勺',\n '势',\n '哓',\n '毪',\n '刖',\n '雜',\n '浪',\n '懵',\n '棁',\n '秋',\n '◇',\n '玡',\n '埯',\n '谥',\n '芑',\n '拌',\n 'Ｚ',\n '埂',\n '寻',\n '虼',\n '豫',\n '蛄',\n '蜞',\n '椟',\n '〔',\n '哩',\n '絷',\n '咱',\n '郈',\n '湫',\n '抡',\n '矮',\n '庖',\n '锰',\n '鎖',\n '葸',\n '棣',\n '砑',\n '题',\n '棋',\n '晕',\n '兠',\n '蓣',\n '貂',\n '裤',\n '昊',\n '扳',\n '讴',\n '弩',\n '蚀',\n '尓',\n '暗',\n '莘',\n '黏',\n '寖',\n '蛔',\n 'И',\n '痪',\n '饳',\n '妈',\n 'Z',\n '秏',\n '矽',\n '蘭',\n '艴',\n '菖',\n '寿',\n '撅',\n '秤',\n '颓',\n '廪',\n '醪',\n '耢',\n '螣',\n '椰',\n '麈',\n '听',\n '敞',\n '铠',\n '润',\n '穑',\n '涟',\n '澹',\n '茨',\n '昨',\n '嚯',\n '钟',\n '護',\n '榇',\n '曦',\n '蜎',\n '呷',\n '邦',\n '瘵',\n '鲬',\n '谖',\n '概',\n '九',\n '飞',\n '潇',\n '高',\n '锫',\n '钐',\n '徘',\n '诟',\n '缧',\n '剞',\n '【',\n '簋',\n '噍',\n '痋',\n '关',\n '糁',\n '鹊',\n '潤',\n '邬',\n '赔',\n '序',\n '盤',\n '拙',\n '盾',\n '鸫',\n '迟',\n '氇',\n '塄',\n '庀',\n '噩',\n '臃',\n '绔',\n '岔',\n '珠',\n '癀',\n '骡',\n '隶',\n '堋',\n '笆',\n '影',\n '昶',\n '飗',\n 'α',\n '薄',\n '碜',\n '瞅',\n '奠',\n '鲽',\n '牂',\n '裆',\n '刀',\n '遑',\n '隙',\n '沔',\n '訾',\n '旇',\n 's',\n '诮',\n '炱',\n '榚',\n '些',\n '縯',\n '提',\n '甚',\n '埏',\n '峣',\n '意',\n '出',\n '郡',\n '摊',\n '哦',\n '轼',\n '嚒',\n '杈',\n '痢',\n '裥',\n '袖',\n '陔',\n '溷',\n '裀',\n '迄',\n '枇',\n '筑',\n '貊',\n '鲃',\n '鸪',\n 'Ｖ',\n '鞭',\n '粳',\n '菥',\n '盒',\n '毙',\n '风',\n '壽',\n '胝',\n '章',\n '泄',\n '浜',\n '菇',\n '釘',\n '揖',\n '蝰',\n '榧',\n '掊',\n '瘿',\n '亍',\n '欤',\n '髻',\n '歃',\n '朱',\n '撇',\n '铁',\n '兜',\n '喋',\n '趵',\n '瘼',\n '芤',\n '邳',\n '除',\n '滌',\n '么',\n '践',\n '矜',\n '曆',\n '炒',\n '咔',\n '促',\n '姐',\n '酦',\n '货',\n '箔',\n '锡',\n '吝',\n '医',\n '汀',\n '精',\n '馘',\n '骶',\n '碉',\n '啷',\n '缉',\n '褪',\n '阙',\n '滕',\n '蓐',\n '搏',\n '俅',\n '癌',\n '股',\n '圪',\n '孕',\n '鳕',\n '话',\n '鳳',\n '妩',\n '馬',\n '鞣',\n '璁',\n '测',\n '螠',\n '圆',\n '颥',\n '卒',\n '钲',\n '䨱',\n '骢',\n '批',\n '陨',\n '婶',\n '熵',\n '鸣',\n '梁',\n '怅',\n '滑',\n '驵',\n '帑',\n '鑽',\n '痈',\n '鲑',\n '犍',\n '茑',\n '糧',\n '谫',\n '咒',\n '绘',\n '塆',\n '耖',\n '铮',\n '殳',\n '角',\n '齮',\n '挻',\n '捎',\n '2',\n 'З',\n '廋',\n '泻',\n '犊',\n '儋',\n '椋',\n '聍',\n '鼬',\n '鳏',\n '收',\n '跞',\n '盥',\n '信',\n '嘴',\n '眉',\n '黠',\n '纡',\n 'Ω',\n '愆',\n '桹',\n '昽',\n '讠',\n '蚧',\n '龀',\n '鳓',\n '麓',\n '括',\n '蘊',\n '鈇',\n '写',\n '焕',\n '哒',\n '忌',\n '咳',\n '蜮',\n '衄',\n '氰',\n '邘',\n '缇',\n '缮',\n '表',\n '续',\n '篇',\n '旄',\n '闻',\n '門',\n '偃',\n '茳',\n '晗',\n '鋪',\n '讶',\n '衙',\n '闭',\n '管',\n '傒',\n '藔',\n '鳯',\n '萼',\n '泥',\n '汔',\n '浆',\n '姚',\n '几',\n '含',\n '沆',\n '繇',\n '灾',\n '嗦',\n '饬',\n '系',\n '熠',\n '漶',\n '潭',\n '牲',\n '湘',\n '稁',\n '宄',\n '亳',\n '杏',\n '豳',\n '監',\n '印',\n '旁',\n '辙',\n '播',\n '让',\n '乳',\n '镚',\n '腒',\n '衅',\n '铅',\n '殛',\n '形',\n '颚',\n '茸',\n '绚',\n '铲',\n '贬',\n '溆',\n '寘',\n '傫',\n '解',\n '事',\n '旻',\n '差',\n '竣',\n '篃',\n '渥',\n '嵩',\n '@',\n '鹀',\n '哈',\n '痍',\n '绪',\n '囔',\n '渗',\n '帐',\n '叙',\n '⑦',\n '跖',\n '貝',\n '盅',\n '碶',\n '哗',\n '裼',\n '窝',\n '滙',\n '郸',\n '延',\n '炼',\n '芹',\n '簃',\n '谭',\n '莱',\n '佞',\n '猝',\n '褥',\n '陆',\n '王',\n '碴',\n '粑',\n '怃',\n '倭',\n '貉',\n '硈',\n '裴',\n '溍',\n '坂',\n '勐',\n '踬',\n '敌',\n '改',\n '膠',\n '罘',\n '罚',\n '繁',\n '幢',\n '煸',\n '扩',\n '黑',\n '氮',\n '孓',\n '饔',\n '姹',\n '蠖',\n '倬',\n '慝',\n '沩',\n '嚏',\n '雌',\n '琏',\n '莹',\n '觊',\n '颟',\n '坤',\n '筅',\n '桉',\n '肈',\n '幻',\n '”',\n '烽',\n '蓅',\n '噌',\n '桎',\n '矻',\n '指',\n '瀚',\n '羊',\n '邒',\n '筒',\n '匣',\n '旨',\n '葑',\n '团',\n '偻',\n '镛',\n '忉',\n '帱',\n '往',\n '刎',\n '害',\n '母',\n '串',\n '酢',\n '舟',\n '栝',\n '娣',\n '⒉',\n '装',\n '笊',\n '篑',\n '垄',\n '镳',\n '牝',\n '煲',\n '氵',\n '遂',\n '骜',\n '钜',\n '屡',\n '宇',\n 'z',\n '惨',\n '潆',\n '鹃',\n '豌',\n '浞',\n '幄',\n '麺',\n '暽',\n '弁',\n '菤',\n '酲',\n '虑',\n '样',\n '访',\n '睁',\n '黼',\n '悞',\n '禧',\n '涠',\n '舂',\n '駕',\n '屈',\n '噀',\n '邽',\n '炅',\n '欸',\n '隆',\n '描',\n '绦',\n '派',\n '溲',\n '颙',\n '忐',\n '鹺',\n '只',\n '诈',\n '腭',\n '亵',\n '这',\n '炀',\n '趣',\n '喙',\n '跨',\n '場',\n '全',\n '搢',\n '舨',\n '踢',\n '巿',\n '糸',\n '乐',\n '澈',\n '羰',\n '匯',\n 'D',\n '濒',\n '莛',\n '癯',\n '娴',\n '姒',\n '祥',\n '渖',\n '庭',\n '渑',\n '挹',\n '狉',\n '萍',\n '鹚',\n '焻',\n '自',\n '舸',\n '岫',\n '飑',\n '戍',\n '淙',\n '愠',\n '导',\n '賣',\n '进',\n '赳',\n '鱿',\n '硂',\n '僤',\n 'O',\n '拟',\n '钨',\n '笳',\n '汴',\n '挤',\n '稞',\n '柏',\n '阐',\n '弥',\n '艽',\n '爻',\n '魭',\n '俶',\n '聂',\n '鲎',\n '齌',\n '菀',\n '僜',\n '煅',\n '满',\n '兀',\n '辔',\n '舊',\n '胥',\n '卢',\n '额',\n '膝',\n '嵬',\n '昼',\n '唏',\n '璨',\n '苷',\n '舫',\n '倨',\n '耵',\n '碳',\n '鄺',\n '橘',\n '裔',\n '裸',\n '宋',\n '窋',\n '悚',\n '昱',\n '错',\n '咣',\n '檄',\n '硁',\n '莆',\n '肃',\n '曼',\n '垍',\n '绵',\n '役',\n '內',\n '館',\n '规',\n '犋',\n '毅',\n '锨',\n '瓘',\n '丘',\n '疝',\n '杀',\n '袗',\n '屏',\n '阎',\n '衹',\n '嚣',\n '冼',\n '铪',\n '熏',\n 'ｔ',\n '储',\n '傧',\n '髁',\n '邙',\n '窴',\n '泾',\n '止',\n '晾',\n '涵',\n '庸',\n '庠',\n '靿',\n '睚',\n '减',\n '衲',\n '思',\n '簖',\n '耘',\n '之',\n '斑',\n '扬',\n '袼',\n '缗',\n '菏',\n '滍',\n '研',\n '垚',\n '艘',\n '黇',\n '蜘',\n '汨',\n '侦',\n '疃',\n '再',\n '沂',\n '榛',\n '励',\n '嚼',\n '拴',\n '钴',\n '珑',\n '撕',\n '鸯',\n '共',\n '醐',\n '揿',\n '醴',\n '凭',\n '菹',\n '鹬',\n '捷',\n '掼',\n '芝',\n '缪',\n '咏',\n '挺',\n '蒗',\n '疖',\n '伸',\n '索',\n '黉',\n '髋',\n '習',\n '姜',\n '蔺',\n '扶',\n '忽',\n '锉',\n '戚',\n '珲',\n '摸',\n '黛',\n '跌',\n '螈',\n '冚',\n '洱',\n '鼯',\n '庡',\n '痒',\n '哆',\n '品',\n '歆',\n '登',\n '呔',\n '追',\n '鉫',\n '碾',\n '祚',\n '总',\n '帚',\n '薹',\n '趴',\n '容',\n '滘',\n '❋',\n '迷',\n '拾',\n '炯',\n '析',\n '佼',\n '嗾',\n '-',\n '针',\n '滩',\n '禅',\n '讯',\n '織',\n '饱',\n '哟',\n '蹓',\n '侧',\n '蹯',\n '踽',\n '趙',\n '漫',\n '卷',\n '朴',\n '卺',\n '狈',\n '绉',\n '浉',\n '玳',\n '榕',\n '畛',\n '蛾',\n '帔',\n '欠',\n '劙',\n '矾',\n '進',\n '蚺',\n '骨',\n '捂',\n '疾',\n '璱',\n '圠',\n '坚',\n '弯',\n '秩',\n '逧',\n '烟',\n '佛',\n '嫱',\n '鳢',\n '裹',\n '耥',\n '潮',\n '巽',\n '嶝',\n '廷',\n '鳆',\n '五',\n '西',\n '壤',\n '慌',\n '鴈',\n '爡',\n '‧',\n '儆',\n '萘',\n '愁',\n '昔',\n '咩',\n '侃',\n '炫',\n '迳',\n '构',\n '缶',\n '皴',\n '捱',\n '菜',\n '秀',\n '粢',\n '畵',\n '辊',\n '伟',\n '榄',\n '嗪',\n '已',\n '聖',\n '枕',\n '恢',\n '厍',\n '涅',\n '鄢',\n '饨',\n '鲨',\n '谪',\n '礤',\n '搁',\n '疔',\n '雎',\n '羿',\n '犁',\n '硐',\n '盹',\n '若',\n '操',\n '昀',\n '亩',\n '凑',\n '睃',\n '贰',\n '穷',\n '荆',\n '葹',\n '嘃',\n '廓',\n '憔',\n '制',\n '胧',\n '染',\n '麿',\n '镴',\n '砀',\n '组',\n '茎',\n '畫',\n '哑',\n '坨',\n '罱',\n '刳',\n '嘲',\n '瞰',\n '缏',\n '侩',\n '谝',\n '谮',\n '还',\n '惋',\n '佈',\n '谏',\n '酗',\n '怩',\n 'ｉ',\n '秽',\n '抻',\n '蟪',\n '狠',\n '辑',\n '羟',\n '娉',\n '肯',\n '毕',\n '枸',\n '啮',\n '鳙',\n '要',\n '娑',\n '蜈',\n '忍',\n '侗',\n 'Р',\n '凛',\n '巉',\n '拽',\n '该',\n '俎',\n '惠',\n '薅',\n '猬',\n '忲',\n '●',\n '哏',\n '柔',\n '沉',\n '磁',\n '脾',\n '龃',\n '鲩',\n '钞',\n '厂',\n '鱽',\n '濞',\n '群',\n '唱',\n '攝',\n '刃',\n '蹻',\n '剕',\n '朊',\n '啜',\n '语',\n '蜻',\n '遠',\n '呖',\n '都',\n '嫄',\n '戢',\n '丫',\n '酞',\n '修',\n '户',\n '膏',\n '侈',\n '浣',\n '捍',\n '馒',\n '谱',\n '點',\n '滏',\n '跟',\n '鹁',\n '书',\n '愉',\n '扭',\n '票',\n '耒',\n '燁',\n '魚',\n '拨',\n '鞑',\n '匆',\n '最',\n '憨',\n '晨',\n '癍',\n '邻',\n '醅',\n '骘',\n '骇',\n '蔫',\n '。',\n '珪',\n '安',\n '歉',\n '邑',\n '淦',\n '胱',\n '漏',\n '咂',\n '叮',\n '瘛',\n '钺',\n '聘',\n '玎',\n '荻',\n '涰',\n '淏',\n '烈',\n '囚',\n '㙟',\n '矫',\n '嗵',\n '澶',\n '磛',\n '肖',\n '蹑',\n '支',\n '哪',\n '久',\n '嗅',\n '稍',\n '抠',\n '具',\n '裨',\n '韨',\n '虿',\n '漪',\n '外',\n '埸',\n 'ä',\n '葡',\n '鲇',\n '廛',\n '蝥',\n '广',\n '兒',\n '涧',\n '阌',\n '谊',\n '嵴',\n '拂',\n '悸',\n '哳',\n '4',\n '佘',\n '篁',\n '基',\n '赪',\n '掬',\n '演',\n '谋',\n '酣',\n '植',\n '波',\n '恅',\n '杼',\n '胀',\n '纯',\n '缩',\n '盆',\n '芷',\n '绺',\n '施',\n '礞',\n '莳',\n '稻',\n '狐',\n '馌',\n '椑',\n '恃',\n '镩',\n '骼',\n '孱',\n '硭',\n '曈',\n '焼',\n '秕',\n '觥',\n '茛',\n '射',\n '肣',\n '蟞',\n '′',\n '彰',\n '罔',\n '麻',\n '逋',\n '谓',\n '革',\n '藤',\n '堆',\n '忿',\n '茂',\n '屦',\n '炟',\n '碹',\n '啤',\n '垤',\n '文',\n '佐',\n '叼',\n '蹭',\n '踉',\n '眍',\n '龟',\n '黾',\n '崋',\n '氘',\n '尼',\n '瞢',\n '悦',\n '罢',\n '瑀',\n '睇',\n '贴',\n '涿',\n '拍',\n '庥',\n '粪',\n '陳',\n '闌',\n '蓍',\n '元',\n '磊',\n '忻',\n '葴',\n '买',\n '诺',\n '㐂',\n '沦',\n '苏',\n '岂',\n '浊',\n '脍',\n '誠',\n '嚬',\n '蔬',\n '黄',\n '銘',\n '钩',\n '劃',\n '嫘',\n '嵖',\n '笄',\n '鸰',\n '熳',\n '堑',\n '河',\n '遮',\n '尝',\n '灭',\n '愬',\n '娅',\n '鸽',\n '锢',\n '狂',\n '弓',\n '侨',\n '滚',\n '释',\n '晏',\n '徵',\n '苡',\n '佚',\n '切',\n '惰',\n '降',\n '槎',\n '脑',\n '磺',\n '谟',\n '裉',\n '弘',\n '醺',\n '眇',\n '顒',\n '兰',\n '忧',\n '础',\n '－',\n '茫',\n '袒',\n '喤',\n '慶',\n '話',\n '跽',\n '堵',\n '能',\n '武',\n '壳',\n '汤',\n '橐',\n '圧',\n '嗡',\n '簌',\n '斧',\n '林',\n '楊',\n '净',\n '嫌',\n '猛',\n '炸',\n '冠',\n '弦',\n '洵',\n '°',\n '創',\n '葜',\n '苁',\n '顏',\n '薛',\n '平',\n '舜',\n '崧',\n '撼',\n '哮',\n '窣',\n '殖',\n '象',\n '飒',\n '瞥',\n '玥',\n '斝',\n '胭',\n '葱',\n '擎',\n '踰',\n '盛',\n '稇',\n '斫',\n '滴',\n '硫',\n '胬',\n '唁',\n '拐',\n '殍',\n '冱',\n '陪',\n '鋈',\n '烦',\n '辋',\n '妇',\n '轸',\n '潴',\n '荤',\n '碡',\n '徭',\n '膜',\n '秧',\n '淀',\n '缤',\n '琶',\n '^',\n '肋',\n '违',\n '轭',\n '$',\n '箕',\n '墩',\n '罗',\n '摆',\n '槛',\n '笠',\n '塃',\n '畚',\n '嘛',\n '秸',\n '≥',\n '剪',\n '羅',\n '帜',\n '庇',\n '骙',\n '酾',\n '康',\n '陬',\n '蝶',\n '闇',\n '圏',\n '琴',\n '鬈',\n '苶',\n '黡',\n '瓠',\n '酋',\n '琎',\n '奏',\n '科',\n '搒',\n '億',\n '翡',\n '熊',\n '性',\n '痞',\n '篾',\n '邴',\n '篥',\n '饵',\n '揸',\n '狙',\n '鳂',\n '否',\n '煺',\n '畦',\n '凖',\n '鹧',\n '宵',\n '庛',\n '鬯',\n '袂',\n '昴',\n '徽',\n '奧',\n '鸥',\n '锸',\n '庚',\n '彪',\n '槿',\n '趱',\n '铡',\n '讹',\n '莎',\n '約',\n '璞',\n '┌',\n '铫',\n '鸈',\n '瞀',\n '鼙',\n '廙',\n '估',\n '屺',\n '锘',\n '渝',\n '汶',\n '囵',\n '跻',\n '酏',\n '扎',\n '孜',\n '腔',\n '吗',\n '块',\n '潽',\n '“',\n '焚',\n '倘',\n '靥',\n '默',\n '笺',\n '遍',\n '剅',\n '桠',\n '极',\n '夷',\n '眸',\n '泳',\n '谢',\n '懦',\n ')',\n '泜',\n '物',\n '开',\n '淮',\n '邵',\n '卟',\n '徜',\n '轧',\n '苍',\n '酶',\n '捌',\n '耨',\n '膄',\n '琦',\n '痦',\n '涪',\n '舰',\n '迥',\n '涘',\n '季',\n '悫',\n '初',\n '贩',\n '碍',\n '沼',\n '腮',\n '勻',\n '恣',\n '他',\n '院',\n '７',\n '蜒',\n '叉',\n '昉',\n '瞽',\n '疢',\n '蓼',\n '相',\n '臜',\n 'ü',\n '秘',\n '蚌',\n '摉',\n '莞',\n '番',\n '盼',\n '冀',\n '缠',\n '学',\n '馗',\n '搞',\n '苛',\n '羹',\n '潟',\n '嬴',\n '杶',\n '妖',\n '↓',\n '銭',\n '斄',\n '猢',\n '搂',\n '芦',\n '埶',\n '癜',\n '铴',\n '從',\n '留',\n '硎',\n '簇',\n '臬',\n '侮',\n '鳎',\n '頉',\n '所',\n '邝',\n '哂',\n '弛',\n '垂',\n '暑',\n '仿',\n '療',\n '轾',\n '熜',\n '悃',\n '勘',\n '鋫',\n '泞',\n '閃',\n '＋',\n '士',\n '虐',\n '盡',\n '溯',\n '劣',\n '1',\n '锇',\n '蜇',\n '碛',\n '婴',\n '８',\n '捶',\n '藻',\n '嫰',\n '跹',\n '芋',\n '淠',\n '疯',\n 'Й',\n '诨',\n '醢',\n '痨',\n '栌',\n '摧',\n '噤',\n '灸',\n '馉',\n '蒇',\n '洲',\n '孪',\n '孵',\n '亿',\n '枝',\n '涕',\n '孟',\n '缎',\n '攒',\n '湧',\n '褛',\n '铺',\n '廣',\n '诃',\n '蕈',\n '维',\n '珣',\n '逖',\n '瓯',\n '苘',\n '榫',\n '寰',\n '供',\n '铽',\n '暲',\n '义',\n '兖',\n '喆',\n '祇',\n '蝽',\n '膛',\n '髭',\n '尹',\n '乒',\n '柈',\n '抓',\n '镋',\n '脏',\n '乩',\n '挎',\n '酬',\n '靳',\n '躔',\n '霞',\n '離',\n '桌',\n 'ｏ',\n '\\u3000',\n '滨',\n '懷',\n '萭',\n '望',\n '仆',\n '怂',\n '麸',\n '槁',\n '洨',\n '俬',\n '孚',\n '匕',\n '栩',\n 't',\n '被',\n '邗',\n '纺',\n '狄',\n '国',\n '苋',\n '眢',\n '秣',\n '畤',\n '∵',\n '创',\n '嵫',\n '胖',\n '垮',\n '镁',\n '壑',\n 'Ａ',\n '趾',\n '荟',\n '汝',\n '嗥',\n '驰',\n '向',\n '磴',\n '讪',\n '溅',\n '箍',\n '驾',\n '讙',\n '蛐',\n '眨',\n '醯',\n '筣',\n '鼫',\n '叠',\n '沥',\n '恕',\n '埽',\n '甩',\n '煜',\n '端',\n '蜃',\n '帏',\n '丙',\n '荏',\n '圻',\n '夥',\n '暖',\n '抛',\n '岸',\n '头',\n '恝',\n '船',\n '鞲',\n 'の',\n '七',\n '怪',\n '诅',\n '茧',\n '北',\n '搓',\n '皖',\n '綉',\n '坪',\n '簪',\n '贵',\n '阍',\n '刑',\n '偶',\n '雷',\n '體',\n '髡',\n '岚',\n '剂',\n '妾',\n '茬',\n '鹣',\n '鲳',\n '蜊',\n '假',\n '认',\n '嗍',\n '傈',\n '焘',\n '驷',\n '賀',\n '氆',\n '炝',\n '聋',\n '嘡',\n '悺',\n '﹐',\n '僭',\n '证',\n '侉',\n '屐',\n '吃',\n '十',\n '〕',\n '瀦',\n '骤',\n '俳',\n '舁',\n '驸',\n '竿',\n '坍',\n '|',\n '普',\n '軒',\n '瘃',\n '现',\n '醾',\n '铈',\n '榭',\n '蓁',\n '唷',\n '睫',\n '绰',\n '叶',\n '頤',\n '锤',\n '浸',\n '杂',\n '汹',\n '璟',\n '蓖',\n '迦',\n '截',\n '錎',\n '年',\n '達',\n '劁',\n '码',\n '乃',\n '捯',\n '髪',\n '埚',\n '呯',\n '頭',\n '镈',\n '汆',\n 'β',\n '舷',\n '菂',\n '纸',\n '造',\n '晁',\n '卦',\n '蛎',\n '枉',\n '脯',\n '诛',\n '生',\n '令',\n '桄',\n '恶',\n '鬟',\n '怯',\n '囡',\n '充',\n '省',\n '控',\n '螂',\n '笕',\n '邺',\n '扅',\n '斲',\n '骏',\n '鹋',\n '队',\n '套',\n '镢',\n '牖',\n 'Ｉ',\n '援',\n '封',\n '泚',\n '艿',\n '沮',\n '铙',\n '揳',\n '抄',\n '帨',\n '近',\n '唾',\n '珥',\n '销',\n '非',\n '啱',\n '驼',\n '瓅',\n '遢',\n '筱',\n '奥',\n '善',\n '氩',\n '盉',\n '帖',\n '杜',\n '鈉',\n '蕉',\n '鳄',\n '江',\n '鄂',\n '矩',\n '排',\n '诠',\n '准',\n '菼',\n '刻',\n '足',\n '峦',\n '灰',\n '僳',\n '蝢',\n '孫',\n '據',\n '璆',\n '孳',\n '徹',\n '妆',\n '坭',\n '渌',\n '喏',\n '钦',\n '朔',\n '机',\n '徼',\n '掾',\n '其',\n '愧',\n '刹',\n '迹',\n '惹',\n '闿',\n '鹘',\n '窗',\n '贳',\n '箓',\n '奡',\n '鸮',\n '翟',\n '滠',\n '辄',\n '夸',\n '袱',\n '】',\n '阿',\n '摁',\n '觽',\n '垠',\n '棼',\n '杉',\n '甏',\n '旖',\n '阜',\n '猩',\n '埤',\n '醛',\n '馥',\n '哫',\n '囝',\n '晖',\n '骸',\n '椭',\n '军',\n '哺',\n '束',\n '犄',\n '遛',\n '涡',\n '罄',\n '赇',\n '幌',\n '曙',\n '契',\n '饹',\n '圳',\n '仝',\n '爝',\n '示',\n '敝',\n '漓',\n '马',\n '铐',\n '掳',\n '鲱',\n '蟀',\n '阵',\n '栒',\n 'b',\n '轮',\n '俯',\n '嬉',\n '漩',\n '佟',\n '捆',\n '迩',\n '液',\n '炊',\n '抒',\n '迭',\n '换',\n '菘',\n '请',\n '柩',\n '腓',\n '妥',\n '怖',\n '穆',\n '骝',\n '胛',\n '幺',\n '燥',\n '棹',\n '孖',\n '洁',\n '边',\n '彥',\n '睨',\n '桁',\n '淆',\n '醤',\n '奘',\n '伙',\n '刘',\n 'o',\n '過',\n '鏖',\n '怄',\n '镗',\n '蘖',\n '卩',\n '龈',\n '枣',\n '联',\n '圊',\n '贫',\n '郭',\n '梗',\n '赡',\n '輸',\n '拼',\n '冰',\n 'Ë',\n '姓',\n '办',\n '拉',\n '富',\n '对',\n '肩',\n '缬',\n '逻',\n '瞠',\n 'な',\n '荚',\n '宝',\n '緃',\n '峋',\n '鞁',\n '坉',\n '译',\n '银',\n '猹',\n '榞',\n '借',\n '楠',\n '殽',\n '片',\n '谸',\n '雩',\n '琨',\n '颏',\n '晷',\n '；',\n '莠',\n '楽',\n '嬗',\n '啉',\n '爍',\n '視',\n '岽',\n '荙',\n '冗',\n '『',\n '鯭',\n '觌',\n '喹',\n '药',\n '腈',\n '蹰',\n '–',\n '泷',\n '榷',\n '卮',\n '缥',\n '各',\n '瘙',\n '凡',\n '悍',\n '劢',\n '６',\n '镰',\n '四',\n '摈',\n '驹',\n '陵',\n '沟',\n '麟',\n '骊',\n '椀',\n '★',\n '滦',\n '菌',\n '彊',\n '疽',\n '辫',\n '璎',\n '郁',\n '资',\n '粼',\n '萄',\n '鳁',\n '鸤',\n '漁',\n '痃',\n '绌',\n '蒴',\n '尊',\n '哙',\n '守',\n '坠',\n '胯',\n '泽',\n '持',\n '隅',\n '耧',\n '逛',\n '鄯',\n '瑜',\n '召',\n '眷',\n '逄',\n '垦',\n '窄',\n '板',\n '赵',\n '源',\n '绹',\n '總',\n '适',\n '轰',\n '钛',\n '停',\n '唝',\n '燎',\n '栽',\n '燃',\n '搬',\n '夬',\n '掐',\n '簦',\n '旃',\n '更',\n '蹊',\n '熙',\n '埃',\n '偲',\n '蒙',\n '舍',\n '杭',\n '朋',\n '霍',\n '谙',\n '蓥',\n '赫',\n '鲏',\n '純',\n '缃',\n '蓓',\n 'è',\n '萧',\n '锆',\n '诉',\n '恚',\n 'u',\n '旷',\n '⑵',\n '褲',\n '鲟',\n '互',\n '峂',\n '绝',\n '陒',\n '议',\n '脽',\n '态',\n '岙',\n '僮',\n '突',\n '濯',\n '犹',\n '阆',\n '溧',\n '宜',\n '霣',\n '呆',\n '鄉',\n '觖',\n '濠',\n '耐',\n '橱',\n '敛',\n '踮',\n '怦',\n '鸠',\n '授',\n '滫',\n '叭',\n '镤',\n '仵',\n '圖',\n '救',\n '变',\n '寕',\n '洋',\n '泃',\n '晥',\n '檎',\n '缦',\n '鏠',\n '悬',\n '彧',\n '韓',\n '籽',\n '磷',\n '歙',\n '÷',\n '杨',\n '闯',\n '罴',\n '鼠',\n '陋',\n '瀣',\n '揾',\n '匪',\n '晚',\n '丧',\n '彷',\n '梏',\n '诽',\n '尻',\n '蹢',\n '拊',\n '氕',\n '芳',\n '凸',\n '懊',\n '型',\n '媄',\n '憝',\n '骆',\n '纭',\n '刺',\n '悼',\n '藍',\n '欧',\n '葳',\n '艺',\n '±',\n '紗',\n '钡',\n '钭',\n '首',\n '栈',\n '闩',\n '勃',\n '喑',\n '栉',\n '栟',\n '焊',\n '哀',\n '竖',\n '肘',\n '悲',\n '鳜',\n '迨',\n '怿',\n '裘',\n '綮',\n '蕹',\n '冕',\n '无',\n '鼢',\n '戽',\n '鲣',\n '蜍',\n '插',\n '扯',\n '俣',\n '袪',\n '级',\n '理',\n '茵',\n '矣',\n '障',\n '禊',\n '惯',\n '䄂',\n '宏',\n '韫',\n '栗',\n '编',\n '座',\n '跫',\n '、',\n '捞',\n '谠',\n '車',\n '袆',\n '舖',\n '暝',\n '9',\n '混',\n '蓊',\n '韂',\n '拳',\n 'j',\n '伶',\n '啦',\n '0',\n '诰',\n '缑',\n '郴',\n '蕲',\n '谛',\n '皋',\n '兢',\n '件',\n '隈',\n '溊',\n '窈',\n '檀',\n '洪',\n '揭',\n '油',\n '颐',\n '剎',\n '侠',\n '或',\n '腻',\n '迪',\n '舔',\n '牺',\n '倦',\n '夭',\n '蠋',\n '鹑',\n '倜',\n '喱',\n '豨',\n '谨',\n '翥',\n '馄',\n '蔚',\n '类',\n '鳍',\n '泯',\n '岷',\n '張',\n '紅',\n '情',\n '婪',\n '睡',\n '诒',\n '旋',\n '舱',\n '列',\n '求',\n '姥',\n '翯',\n '锲',\n '適',\n '蒡',\n '㭗',\n '韵',\n '撄',\n '律',\n '湊',\n '鲪',\n '碓',\n '馓',\n '汛',\n '尤',\n '℃',\n '泫',\n '竹',\n '溃',\n '诵',\n '乡',\n '楹',\n '肷',\n '戋',\n '獭',\n '撴',\n '晤',\n '嘎',\n '裢',\n '轱',\n '歘',\n '鼱',\n '舀',\n '潵',\n '腩',\n '挽',\n '至',\n '骞',\n '佻',\n '蕊',\n '轫',\n '岘',\n '斌',\n '《',\n '雇',\n '枘',\n '贶',\n '履',\n '亭',\n '绍',\n '空',\n '泡',\n '擒',\n '蠓',\n '桼',\n '舢',\n '踵',\n '柢',\n '躺',\n '罥',\n '蔁',\n '幪',\n '蒯',\n '≤',\n '齉',\n '況',\n '锕',\n '徇',\n '儿',\n '帽',\n '谕',\n '抽',\n '獍',\n '揪',\n '膳',\n '酴',\n '姊',\n '作',\n '弍',\n '郦',\n '翮',\n '髌',\n '勝',\n '孔',\n '颁',\n '泩',\n '衾',\n '翊',\n '噉',\n '∩',\n '先',\n '的',\n '財',\n '绢',\n '崇',\n '饲',\n '賓',\n '绾',\n '陡',\n '砾',\n '纷',\n '酱',\n '窎',\n '浕',\n '琫',\n '补',\n '嗽',\n '呛',\n '蚓',\n '伪',\n '艨',\n '搡',\n '粗',\n '阱',\n '商',\n '郫',\n '喵',\n '缯',\n '炻',\n '州',\n '珽',\n '芒',\n '脶',\n '蕖',\n '拘',\n '\\\\',\n '蕃',\n '伏',\n '蛏',\n '璘',\n '缡',\n '伞',\n '吸',\n '煞',\n '嗫',\n '餪',\n '━',\n '8',\n '漠',\n '衮',\n '峭',\n '筌',\n '阀',\n '乇',\n '杞',\n '镕',\n '鹈',\n '觚',\n '疋',\n '猥',\n '肚',\n '阃',\n '地',\n '鸾',\n '玚',\n '镀',\n '诬',\n '凇',\n '惬',\n '劝',\n '堠',\n '睪',\n '瞪',\n '涓',\n '專',\n '琢',\n '蠹',\n '裂',\n '芎',\n '轲',\n '谯',\n '畋',\n '长',\n '攘',\n '缁',\n '吵',\n '汈',\n '稂',\n '咤',\n '甸',\n '瀑',\n '讣',\n '翠',\n '綦',\n '笑',\n '掺',\n '宫',\n '唆',\n '旗',\n '帘',\n '遵',\n '唪',\n '连',\n '必',\n '姬',\n '枵',\n '渫',\n '神',\n '凱',\n '虞',\n '闵',\n '爭',\n '迢',\n '飓',\n '桴',\n '冑',\n '招',\n '鬶',\n '赊',\n '朦',\n '薜',\n '逗',\n '铩',\n '焖',\n '狱',\n '昕',\n '犀',\n '捏',\n '侓',\n '爆',\n '箧',\n '怠',\n '缐',\n '苄',\n '踯',\n '暹',\n '絮',\n '裁',\n '嘶',\n '诙',\n '攥',\n '¥',\n '痫',\n '摹',\n '朕',\n '薰',\n '闼',\n '樨',\n '需',\n '蕾',\n '扔',\n '服',\n '蚩',\n '漳',\n '瞻',\n '陟',\n '诐',\n '爽',\n '耩',\n '坏',\n '寶',\n '瞧',\n '蘅',\n '爺',\n '仇',\n '瞈',\n '揉',\n '隰',\n '阏',\n '皤',\n '鉏',\n '郇',\n '啵',\n '僧',\n '渐',\n '骠',\n '厾',\n '谦',\n '榱',\n '蓮',\n '乂',\n '伷',\n '觐',\n '遫',\n '畀',\n '污',\n '眭',\n '蝗',\n '亢',\n '腾',\n '遇',\n '欺',\n '狸',\n '籼',\n '锯',\n '赚',\n '槔',\n '域',\n '老',\n '掩',\n '锎',\n '邪',\n '沬',\n '袯',\n '映',\n '肤',\n '舒',\n '箦',\n '涎',\n '缔',\n '孃',\n '萎',\n '推',\n '峧',\n '嫒',\n '嵐',\n '怒',\n '闾',\n '阅',\n '扢',\n '絡',\n '剩',\n '腢',\n '晌',\n '铟',\n '铚',\n '燔',\n '鄜',\n '墠',\n '擤',\n '芸',\n '鼩',\n '食',\n '朰',\n '啥',\n '贿',\n '券',\n '垩',\n '典',\n '逭',\n '成',\n '帧',\n '侯',\n '妒',\n '顷',\n '晩',\n '浦',\n '汳',\n '㾄',\n '坊',\n '②',\n '蝼',\n '倩',\n '挦',\n '騠',\n '蓂',\n '兹',\n '渤',\n '茴',\n '矶',\n '煤',\n '伛',\n '逃',\n '堞',\n '漭',\n '闽',\n '埠',\n '妗',\n '烙',\n '傀',\n '滢',\n '堂',\n '骅',\n '崮',\n '兿',\n '螟',\n '榴',\n '蒈',\n '蟛',\n '员',\n '嗟',\n '毗',\n '鹭',\n '毖',\n '籍',\n '傣',\n '偈',\n '澴',\n '耆',\n '黔',\n '薷',\n '俘',\n '箸',\n '蒺',\n '记',\n '铣',\n '拥',\n '瑰',\n '抉',\n '史',\n '急',\n '什',\n '川',\n '曪',\n '剖',\n '罪',\n '扥',\n '鱼',\n '羌',\n '复',\n '昵',\n '朓',\n '氪',\n '矅',\n 'ò',\n '摒',\n '催',\n '{',\n '懂',\n '莉',\n '屃',\n '症',\n '遒',\n '璋',\n '鄒',\n '玄',\n '氦',\n '舳',\n '納',\n '锷',\n '鲥',\n '羸',\n '怵',\n '嬖',\n '飚',\n '倔',\n '辨',\n '篌',\n '娄',\n '洎',\n '弟',\n '悝',\n '婥',\n '待',\n '梃',\n '棕',\n '撞',\n '肊',\n '婺',\n '桥',\n '慕',\n '5',\n '尖',\n '监',\n '囊',\n '腎',\n '瘁',\n '⑴',\n '伢',\n '邈',\n '炷',\n '籴',\n '月',\n '终',\n '龠',\n '蹇',\n '柯',\n '噜',\n '多',\n '玮',\n '踹',\n '泣',\n '圮',\n '辈',\n '鄙',\n '赆',\n '蠃',\n '珈',\n '鬃',\n '识',\n '甑',\n '藓',\n '宥',\n '韧',\n '隗',\n '跚',\n '峁',\n '晒',\n '戳',\n '環',\n '葓',\n '筐',\n '瑚',\n '稆',\n '巩',\n '葵',\n '网',\n '铨',\n '仡',\n '呶',\n '休',\n '村',\n '傩',\n '浡',\n '祝',\n '幅',\n '晳',\n '岿',\n '[',\n '尃',\n '响',\n '咽',\n '讵',\n '淹',\n '糠',\n '驴',\n '烹',\n '甪',\n '焯',\n '整',\n '瘆',\n '茀',\n '瑞',\n '嘁',\n '赅',\n '芼',\n '震',\n '怼',\n '膑',\n '蒟',\n '钊',\n '缷',\n '獨',\n '俄',\n '噪',\n '亏',\n '芍',\n '鲲',\n '黟',\n '酃',\n '铻',\n '→',\n '鲡',\n '仑',\n '有',\n '扌',\n '治',\n '聆',\n '腙',\n '冬',\n '剥',\n '诓',\n '祃',\n '棘',\n '孥',\n '濆',\n '鞋',\n '赣',\n '卜',\n '谆',\n '投',\n '琊',\n '塍',\n '洗',\n '津',\n '肴',\n '奕',\n '掴',\n '螗',\n '胸',\n '惦',\n '赠',\n '耶',\n '蛸',\n '曷',\n '名',\n '栏',\n '崖',\n '始',\n '孤',\n '篆',\n '椴',\n '模',\n '儙',\n '袁',\n '颌',\n '卤',\n '寂',\n '呸',\n '蓺',\n '噶',\n '钔',\n '粹',\n '潸',\n '郾',\n '娡',\n '啖',\n '芜',\n '䧳',\n '缟',\n '鞅',\n '哇',\n '嚄',\n '熛',\n '私',\n '住',\n '鉄',\n 'Ｕ',\n '失',\n '蜾',\n '㺃',\n '莨',\n '擂',\n '沕',\n '铄',\n '耰',\n '炔',\n '藐',\n '锈',\n '苇',\n '芯',\n '檇',\n '龍',\n '珀',\n '筻',\n '褚',\n '缀',\n '棬',\n '仲',\n '杧',\n '铛',\n '挖',\n '缸',\n '嵇',\n '剟',\n '觋',\n '鬼',\n '天',\n '鹪',\n '豭',\n '腴',\n '驿',\n '粵',\n '馈',\n '迸',\n '夕',\n '蜚',\n '禺',\n '迎',\n '狞',\n '嶽',\n '躯',\n '暅',\n '蹾',\n '甾',\n '柆',\n 'e',\n '欃',\n '無',\n '羽',\n '蛛',\n '僖',\n '碲',\n '遴',\n '厝',\n '滂',\n '眦',\n '鹅',\n '咖',\n '潜',\n '媽',\n '啴',\n '寨',\n '琬',\n '判',\n '塌',\n '与',\n '剧',\n '掮',\n '读',\n '庆',\n '愚',\n '氲',\n '梾',\n '稗',\n '很',\n '饯',\n '淘',\n '灞',\n 'A',\n '！',\n '飾',\n '醚',\n '壁',\n '芮',\n '蔼',\n '知',\n '郯',\n '瞒',\n '术',\n '法',\n '匠',\n '┅',\n '尕',\n '脂',\n '琅',\n '孝',\n '埙',\n '濟',\n '袷',\n '方',\n '芾',\n '驽',\n '线',\n '咡',\n '睿',\n '滥',\n '鞨',\n '駹',\n '馎',\n '蛲',\n '申',\n '涣',\n '牗',\n '跄',\n '鲐',\n '泐',\n '铍',\n '肓',\n 'é',\n '司',\n '辣',\n '慑',\n '崞',\n '魏',\n '髯',\n '涯',\n '滃',\n '薪',\n '~',\n '鐵',\n '町',\n '芥',\n '匿',\n '癞',\n '嘚',\n '□',\n '啪',\n '俇',\n '橛',\n '巅',\n '鄞',\n '痱',\n '回',\n '着',\n '魂',\n '瘀',\n '埒',\n '措',\n '蚪',\n '锁',\n '巴',\n '芏',\n '另',\n '忏',\n '洇',\n '⑾',\n '箱',\n '劳',\n '榈',\n 'Ｂ',\n '毒',\n '泰',\n '巍',\n '寇',\n '斛',\n '赖',\n '酒',\n '密',\n '左',\n '莜',\n '茯',\n '脆',\n '饴',\n '洳',\n '舉',\n '酪',\n '鼒',\n '職',\n '桫',\n '螋',\n '砌',\n '戬',\n '前',\n '豁',\n '膲',\n '鲯',\n '憋',\n '珺',\n '蹂',\n '亥',\n '冷',\n '蜔',\n '俦',\n '碇',\n '慰',\n '扒',\n '亮',\n '弒',\n '胫',\n '肠',\n '弇',\n '拣',\n '丸',\n '涫',\n '勉',\n '帝',\n '玠',\n '应',\n '砜',\n '鬓',\n '泮',\n '鳖',\n '峇',\n '辗',\n '吴',\n '僡',\n '玊',\n '钘',\n '惘',\n '奁',\n '翰',\n '爨',\n '罽',\n '莶',\n '纻',\n '菪',\n '興',\n '钧',\n '鄹',\n '缌',\n '嘉',\n '玲',\n '蛋',\n '倚',\n '镬',\n '彳',\n '氯',\n '谐',\n '疗',\n '魉',\n '扈',\n '鏡',\n '涤',\n '佑',\n '勾',\n '饽',\n 'R',\n '局',\n '醉',\n '燫',\n '驱',\n '崽',\n '榮',\n '锄',\n '脎',\n '枓',\n '敲',\n '俑',\n '镶',\n '当',\n '逦',\n '寅',\n '捽',\n '宗',\n '茼',\n '稿',\n '躇',\n '晋',\n '东',\n '渭',\n '闶',\n '潦',\n '慊',\n '蔟',\n '疑',\n '蜡',\n '嬛',\n '荒',\n '扪',\n '拈',\n '受',\n '沱',\n '螽',\n '嗣',\n '瘰',\n '颖',\n '百',\n '楱',\n '崛',\n '窿',\n '蓬',\n '禨',\n '螵',\n '捕',\n '鳀',\n '霰',\n '瘸',\n '圄',\n '陂',\n '敢',\n '矗',\n '炉',\n '篪',\n '注',\n '凉',\n '摔',\n '衿',\n 'g',\n '遘',\n '鳟',\n '腚',\n '泱',\n '荣',\n '池',\n '杰',\n '阻',\n '里',\n '峥',\n '葺',\n '翔',\n '柁',\n '飐',\n '载',\n '刨',\n '瘊',\n '溏',\n '嚭',\n '穝',\n '站',\n '笞',\n '厌',\n '门',\n '汞',\n '雠',\n '靖',\n '怨',\n '葙',\n '厅',\n '凉',\n '荨',\n '底',\n '坼',\n '海',\n '轩',\n '秃',\n '醭',\n '莒',\n '坎',\n '驺',\n '瀛',\n '嵝',\n '溥',\n '嚋',\n '寤',\n 'k',\n '築',\n '耔',\n '跎',\n '小',\n '弊',\n '疭',\n '√',\n '洞',\n '利',\n '次',\n '迕',\n '鸿',\n '刁',\n '媳',\n '酹',\n '磋',\n '勒',\n '伎',\n '浔',\n '斤',\n '珊',\n '鸳',\n '颊',\n '塗',\n '刈',\n '龛',\n '縻',\n '楚',\n '脓',\n '南',\n '伧',\n '桨',\n '尸',\n '退',\n '亊',\n '侔',\n '蓟',\n '削',\n '诲',\n '瑯',\n '挝',\n '绩',\n '嶂',\n '耷',\n '太',\n '著',\n '讥',\n '烂',\n '哥',\n '菔',\n '唳',\n '筫',\n '嚷',\n '斯',\n '蔡',\n '碧',\n '慵',\n '搐',\n '琵',\n '逶',\n '菡',\n '篙',\n '驭',\n '莲',\n '毫',\n '犯',\n '坌',\n '啕',\n '疴',\n '傻',\n '牧',\n '肺',\n '既',\n '悟',\n '讳',\n '练',\n '钠',\n '胨',\n 'Ｇ',\n '迁',\n '帙',\n '嫦',\n '哿',\n '柝',\n '迤',\n '庑',\n '踟',\n '粤',\n '乜',\n '悭',\n '霁',\n '在',\n '虔',\n '蓦',\n '暾',\n '鲅',\n '様',\n '徐',\n '诫',\n '料',\n '蒂',\n '揎',\n '溜',\n '崎',\n '玦',\n '隐',\n '绳',\n '幼',\n '钼',\n '腧',\n '槌',\n '镅',\n '锿',\n '蹁',\n '猱',\n '狁',\n '蹈',\n 'S',\n '傢',\n '}',\n '珉',\n '浴',\n '龚',\n '吇',\n '肆',\n '⑩',\n '臌',\n '鏢',\n '―',\n '定',\n '哧',\n '螳',\n '爹',\n '摞',\n '榍',\n '苩',\n '丑',\n '犴',\n '璀',\n '偎',\n '燹',\n '洯',\n '啁',\n '鱾',\n '計',\n '镂',\n '字',\n '琉',\n '壴',\n '霖',\n '蟜',\n '做',\n '松',\n '扣',\n '徊',\n '叱',\n '桑',\n '≠',\n '寓',\n '崔',\n '茌',\n '`',\n '殓',\n '猖',\n '慎',\n '坻',\n '皮',\n '喔',\n '耕',\n '拧',\n '织',\n '桂',\n '垝',\n '约',\n '飯',\n '皿',\n '移',\n '微',\n '桅',\n '钬',\n '赑',\n '宓',\n '颉',\n '掂',\n '希',\n '沁',\n '翳',\n '澝',\n '崭',\n '聃',\n '蔸',\n '磕',\n '崚',\n '奉',\n '槍',\n '颠',\n '任',\n '飕',\n '蛴',\n '歼',\n '蛭',\n '￥',\n '鉵',\n '刷',\n '泓',\n '頫',\n '诤',\n '阈',\n '诖',\n '漂',\n '冯',\n '柠',\n '本',\n '狼',\n '芗',\n '丹',\n '柒',\n '饫',\n '衫',\n '摩',\n '桃',\n '啼',\n '譄',\n '醌',\n '帡',\n '少',\n '螃',\n '祷',\n '幸',\n '喘',\n '噼',\n '甲',\n '刭',\n '泊',\n '那',\n '舄',\n '畲',\n '遊',\n '記',\n '绠',\n '蝈',\n '忒',\n '耙',\n '鹌',\n '搽',\n '绕',\n '镠',\n '凼',\n '扫',\n '鸵',\n '匡',\n '缈',\n '铼',\n '挢',\n '踊',\n '噭',\n '苴',\n '貌',\n '啾',\n '蒜',\n '茱',\n '⒅',\n '邛',\n '棉',\n '怀',\n '筵',\n '笾',\n '邢',\n '濱',\n '蒲',\n '嫠',\n '儡',\n '益',\n '萊',\n '歩',\n '日',\n '婢',\n '楔',\n '嚎',\n '髂',\n '禄',\n '巫',\n '懿',\n '砍',\n '惆',\n '袭',\n '～',\n '欲',\n '鳅',\n '書',\n '撷',\n '库',\n '绻',\n '⒁',\n '蒹',\n '辜',\n '屉',\n '奂',\n '龇',\n '诡',\n '醑',\n '儀',\n '讷',\n '聒',\n '盖',\n '浅',\n '長',\n '蛑',\n '念',\n '辒',\n '蚊',\n '勖',\n '揣',\n '岬',\n '糅',\n '刊',\n '蛆',\n '硌',\n '柜',\n '惗',\n '激',\n '颈',\n '閣',\n '唬',\n '捧',\n '蒽',\n '爸',\n '侏',\n '氧',\n '蛤',\n '牡',\n '瘦',\n '铉',\n '撒',\n '屿',\n '谔',\n '钀',\n '瓦',\n '恂',\n '钻',\n '声',\n '馨',\n '贷',\n '藁',\n '闰',\n '人',\n '瀹',\n '间',\n '炜',\n '煨',\n '畴',\n '鞡',\n '悔',\n '量',\n '原',\n '屁',\n '杯',\n '趋',\n '愎',\n '瓶',\n '烘',\n '韬',\n '姮',\n '勰',\n '眛',\n '饮',\n '瘐',\n '决',\n '版',\n '際',\n '俸',\n '此',\n '辽',\n '愫',\n '爷',\n '隘',\n '螯',\n '腕',\n '闟',\n '厣',\n '齁',\n '矿',\n '女',\n '扇',\n '郄',\n '诚',\n '焜',\n '<',\n '檵',\n '赙',\n '郢',\n '酌',\n '恳',\n '侵',\n '劍',\n '徳',\n '脔',\n '岍',\n '倍',\n '隹',\n '镲',\n '僬',\n '○',\n '啭',\n '坳',\n '谰',\n '璪',\n '昆',\n '⒆',\n '惧',\n '虺',\n '篡',\n '锐',\n '邮',\n '嵊',\n '恹',\n '茄',\n '黯',\n '對',\n '魑',\n '禀',\n '添',\n '汎',\n '廉',\n '戈',\n '∈',\n '陈',\n '肟',\n '螅',\n '缰',\n '啃',\n '瘾',\n '辁',\n '茜',\n '曝',\n 'Ｃ',\n '餍',\n '蜴',\n '咦',\n '臺',\n '扺',\n '隽',\n '崴',\n '遐',\n '胃',\n '铕',\n '楗',\n '墀',\n '魈',\n '淑',\n '邰',\n '飧',\n '勤',\n '糨',\n '你',\n '铂',\n '蛰',\n '锻',\n '塈',\n '予',\n '怏',\n '鷪',\n '暂',\n '诞',\n '會',\n '鼐',\n '辏',\n '矬',\n '筜',\n '蟒',\n '柫',\n '靴',\n '垒',\n '樵',\n '狨',\n '魋',\n '查',\n '掸',\n '＇',\n '每',\n '浮',\n '绞',\n '疍',\n '於',\n '饦',\n '辐',\n '墟',\n '窳',\n '养',\n '墦',\n '鲔',\n '黝',\n '迈',\n '砟',\n '伥',\n '藜',\n '墅',\n '喬',\n '卬',\n '赶',\n '眼',\n '龌',\n '主',\n '嗞',\n '転',\n '襕',\n '，',\n '杲',\n '儒',\n '政',\n '蹩',\n '付',\n 'Я',\n '厢',\n '点',\n '如',\n '茗',\n '奍',\n '嗌',\n '蕴',\n '问',\n '膚',\n '硒',\n '佃',\n '居',\n '赍',\n '鯨',\n '槜',\n '衡',\n '廐',\n '鲾',\n '慈',\n '莫',\n '篮',\n '铱',\n '园',\n '范',\n '靠',\n '叻',\n '绸',\n '众',\n '抑',\n '浃',\n '極',\n '辀',\n '千',\n '蔯',\n 'ｒ',\n '碱',\n '應',\n '夼',\n '祺',\n '绣',\n '澉',\n '愛',\n '譬',\n '刚',\n '扼',\n '檫',\n '时',\n '荼',\n '部',\n '耽',\n '稀',\n '琳',\n '鎮',\n '鳃',\n '疌',\n '挠',\n '京',\n '筴',\n '胳',\n '橡',\n '裱',\n '栊',\n '蛩',\n '流',\n '猄',\n '葭',\n '邯',\n '伤',\n '秦',\n '孺',\n '郓',\n '筏',\n '茉',\n '谈',\n '黥',\n '鳇',\n '魅',\n '秫',\n '敫',\n '肄',\n '俪',\n '尺',\n '度',\n '廊',\n '昏',\n '怎',\n '钎',\n '愤',\n '腿',\n 'Λ',\n '碘',\n '囤',\n '婆',\n '煋',\n '桀',\n '阪',\n '焒',\n '砘',\n '澡',\n '阒',\n '臼',\n '茭',\n '纛',\n '唻',\n '胗',\n '歌',\n '吱',\n '铸',\n '種',\n '礳',\n '舾',\n '砰',\n '即',\n '慥',\n '缆',\n '躞',\n '卖',\n '眆',\n '搎',\n '鲁',\n '稠',\n '惝',\n '毶',\n '耎',\n '挡',\n '异',\n '咨',\n '歔',\n '垫',\n '素',\n '鳊',\n '打',\n '镏',\n '耗',\n '锭',\n '剀',\n '讓',\n '鍋',\n '歇',\n '拗',\n '齿',\n '聊',\n '惕',\n '塔',\n '况',\n '汐',\n '采',\n '灣',\n '菁',\n '峰',\n '呋',\n '阴',\n '衽',\n '鹏',\n '挂',\n '鲞',\n '第',\n '浑',\n '秭',\n '铯',\n '胎',\n '滔',\n '雕',\n '渔',\n '骍',\n '鴻',\n '眚',\n '易',\n '枫',\n '麥',\n '罹',\n '劈',\n '苣',\n '蹄',\n '是',\n '锛',\n '饼',\n '铳',\n '器',\n '秒',\n '開',\n '舛',\n '纳',\n '庒',\n '饰',\n '发',\n '虎',\n '乏',\n '届',\n '浯',\n '目',\n '霪',\n '氢',\n '华',\n '澧',\n '陴',\n '誊',\n '欷',\n '瀌',\n '梵',\n '嗖',\n '惩',\n '妞',\n '螓',\n '溇',\n '嬃',\n '笼',\n '嬢',\n '獠',\n '辩',\n '骛',\n '挪',\n '礅',\n '銎',\n '趺',\n '狍',\n '阑',\n '擦',\n '咙',\n '+',\n '鼻',\n '戆',\n '宿',\n '霏',\n '牁',\n '耦',\n '枳',\n '鲸',\n '阽',\n '峯',\n '瘭',\n '祁',\n '镜',\n '绮',\n '道',\n '摭',\n '﹒',\n '耠',\n '限',\n '轻',\n '莽',\n '帛',\n '唯',\n '墒',\n 'Ｗ',\n '荦',\n '矸',\n '崃',\n '洫',\n '杳',\n '舌',\n '涌',\n '朵',\n '苑',\n '瓻',\n '辂',\n '凬',\n '畺',\n '莩',\n '奔',\n '荐',\n '撵',\n '嶲',\n '憧',\n '沖',\n '邱',\n '瞑',\n '瘢',\n '腺',\n '嵯',\n '诗',\n '經',\n '胚',\n '谎',\n '央',\n '稼',\n '３',\n '冈',\n '痣',\n '故',\n '皎',\n '珅',\n '踅',\n '硇',\n '通',\n '鹱',\n '草',\n '粕',\n '而',\n '梨',\n '萜',\n '搛',\n '鸺',\n '托',\n '倡',\n '匾',\n '骷',\n '桐',\n '阇',\n '璃',\n '抖',\n '显',\n '镝',\n 'I',\n '锣',\n '辆',\n '茝',\n '虫',\n '谀',\n '萤',\n '帼',\n '滈',\n '鮼',\n '乔',\n '会',\n '产',\n '縢',\n '纱',\n '跆',\n '铤',\n '圯',\n '旚',\n '墓',\n '棰',\n '苜',\n '聩',\n '蚍',\n '筢',\n '殇',\n '槚',\n '阂',\n '豊',\n '翚',\n '犰',\n '疚',\n '浠',\n '礴',\n '界',\n '蛙',\n '吁',\n '忪',\n '讫',\n '辇',\n '汧',\n '澥',\n '纮',\n '糺',\n '拭',\n '镉',\n '鄠',\n '讼',\n '鎏',\n '逐',\n '烝',\n '扊',\n '筹',\n '仪',\n '段',\n '杵',\n '卲',\n '钤',\n '曹',\n '潘',\n '浏',\n '陑',\n '答',\n '期',\n '橋',\n '位',\n '梅',\n '榻',\n '芨',\n '汭',\n '贇',\n '杅',\n '伋',\n '馁',\n '皈',\n '躁',\n '鲦',\n '良',\n '幤',\n '曺',\n '榖',\n '便',\n '氍',\n '窍',\n '槃',\n '設',\n '襦',\n '菓',\n '猡',\n '槲',\n '觱',\n '邠',\n '岩',\n '骈',\n '鬲',\n '睽',\n '残',\n '碗',\n '凯',\n '览',\n '伾',\n '吣',\n '峡',\n '箨',\n '忡',\n '岁',\n '醵',\n '霸',\n '焐',\n '谁',\n '疟',\n '樾',\n '竺',\n '果',\n '阝',\n '花',\n '•',\n '耱',\n '嗜',\n '骰',\n '萋',\n '甄',\n '侍',\n '厦',\n '辌',\n '给',\n '健',\n '垧',\n '娩',\n '校',\n '又',\n '临',\n '揽',\n '犟',\n '蠢',\n '包',\n '檬',\n '穹',\n '燮',\n '札',\n '翏',\n '领',\n '深',\n '诶',\n '窒',\n '鸷',\n '统',\n '肾',\n '澍',\n '畹',\n '职',\n '蝟',\n '眬',\n '旎',\n '朘',\n '眠',\n '篚',\n '贼',\n '貴',\n '＃',\n '茆',\n '磬',\n '①',\n '祀',\n '坞',\n '盯',\n '苹',\n '痼',\n '耪',\n '狺',\n '妓',\n '湨',\n '動',\n '渚',\n '售',\n '鸶',\n '霄',\n '某',\n '×',\n '铀',\n '桓',\n '脲',\n '心',\n '节',\n '［',\n '蜩',\n '剐',\n '猜',\n '盂',\n '穿',\n '洮',\n '坜',\n '掷',\n '坐',\n '烜',\n '冶',\n '袍',\n '穴',\n '偷',\n '槽',\n '面',\n '媛',\n '撙',\n '孩',\n '询',\n '苈',\n '橙',\n '恙',\n '吉',\n '燈',\n '暇',\n '杋',\n '後',\n '璇',\n '喟',\n '妪',\n '湄',\n '贡',\n '兮',\n '楫',\n '锗',\n '肮',\n '圉',\n '参',\n '烃',\n '葩',\n '骀',\n '锖',\n '犿',\n '恼',\n '麯',\n '牮',\n '溱',\n '俵',\n '祢',\n '割',\n '羲',\n '中',\n '博',\n '膦',\n '7',\n '钙',\n '耸',\n '蚋',\n '嘬',\n '逝',\n '瓿',\n '且',\n '苗',\n '屑',\n '華',\n '糯',\n '吓',\n '陇',\n '.',\n '魆',\n 'd',\n '拶',\n '箜',\n '澳',\n '蘼',\n '垸',\n '钅',\n '樯',\n '侑',\n '娼',\n '赛',\n '恪',\n '击',\n '濮',\n '隔',\n '似',\n '惜',\n '滤',\n '培',\n '谩',\n '坝',\n '煙',\n '馕',\n '茡',\n '颼',\n '啡',\n '强',\n '巡',\n '糗',\n '芙',\n '骒',\n '常',\n '鳔',\n '楣',\n '嫩',\n '师',\n '攀',\n '旭',\n '茠',\n '吏',\n '剌',\n '露',\n '把',\n '携',\n '忘',\n '软',\n '荩',\n '弧',\n '锩',\n '僦',\n '掘',\n '仓',\n '嵚',\n '沲',\n '傅',\n '蝴',\n '爵',\n '纪',\n '薮',\n '參',\n '荀',\n '珙',\n '逞',\n '蹙',\n '徉',\n '佶',\n '庹',\n '弢',\n '锞',\n '想',\n '窕',\n '躬',\n '蚡',\n '闸',\n '难',\n '妃',\n '唶',\n 'V',\n '蚂',\n '酐',\n ']',\n '羁',\n '土',\n '敏',\n '蝻',\n '赎',\n '闹',\n '铷',\n '脬',\n '攫',\n '椐',\n '橹',\n '(',\n '暨',\n '剁',\n '灵',\n '咫',\n '苻',\n '赈',\n '萝',\n '鹮',\n '颛',\n '勿',\n '臆',\n '福',\n '蝠',\n '烺',\n '跤',\n '垓',\n '庋',\n '鏊',\n '彭',\n '碚',\n '膂',\n '鐘',\n '鸹',\n '择',\n '疫',\n '暌',\n '胙',\n '翘',\n '仞',\n '實',\n '猫',\n '嘹',\n '坟',\n '泺',\n '靽',\n '仟',\n '鲋',\n '畅',\n '箪',\n '箩',\n '星',\n '辍',\n '餐',\n '伍',\n '狃',\n '蹐',\n '芴',\n '龋',\n '仨',\n '狩',\n '诌',\n '媚',\n '琚',\n '❤',\n '鉰',\n '仔',\n '忝',\n '垅',\n '嗤',\n '氅',\n '填',\n '詹',\n '诿',\n '皑',\n '椅',\n '鲭',\n '繪',\n '碑',\n '选',\n '廠',\n '嶓',\n '迮',\n '唠',\n '赏',\n '│',\n '泍',\n '姑',\n '晦',\n '直',\n '艾',\n '邂',\n '裝',\n '郊',\n '疡',\n '」',\n '鸲',\n '兕',\n '县',\n '邡',\n '麤',\n '旧',\n '壶',\n '礼',\n '梭',\n '铔',\n '玕',\n '硬',\n '后',\n '馅',\n '窠',\n '俊',\n '犾',\n '槭',\n '姨',\n '妨',\n '幡',\n '沿',\n '帮',\n '爿',\n '褊',\n '淅',\n '册',\n '诔',\n '使',\n '唢',\n '族',\n '逮',\n '蟋',\n '掣',\n '红',\n '颔',\n '闲',\n '咧',\n '衍',\n '矛',\n '蹜',\n '抱',\n '雀',\n '箴',\n '雙',\n '茁',\n '聲',\n '芰',\n '瘤',\n '落',\n '峨',\n '秆',\n '献',\n '霭',\n '胰',\n '墁',\n '柽',\n '跛',\n '阼',\n '菝',\n '谗',\n '蠊',\n '懋',\n '蔷',\n '拃',\n '岱',\n '戡',\n '逡',\n '背',\n '克',\n '棱',\n '栲',\n '乖',\n '橄',\n '炭',\n '萱',\n '胲',\n '摺',\n '殆',\n '魍',\n '宾',\n '拢',\n '姁',\n '祲',\n '·',\n '歹',\n '胆',\n '爱',\n '旰',\n '抢',\n '匜',\n '硚',\n '愈',\n '跳',\n '▲',\n '跪',\n '網',\n '糈',\n '維',\n '痹',\n '娃',\n '疸',\n '痔',\n '褙',\n '芭',\n '鹜',\n '猷',\n '檩',\n '吨',\n '淖',\n '竟',\n '呱',\n '瘠',\n '奢',\n '呐',\n '扞',\n '灼',\n '家',\n '饿',\n '玻',\n '倾',\n '锚',\n '遗',\n '赝',\n '去',\n '跣',\n '纬',\n '玢',\n '梆',\n '陉',\n '屎',\n '上',\n '酆',\n '搤',\n '併',\n '腌',\n '避',\n '禹',\n '绅',\n '帆',\n '英',\n '区',\n '交',\n '▪',\n '巧',\n '豹',\n '游',\n '清',\n '荧',\n '娀',\n '訓',\n '尾',\n '觫',\n '梢',\n '均',\n '忤',\n '继',\n '變',\n '喽',\n '尉',\n '骚',\n '趸',\n '馃',\n '石',\n '置',\n '毡',\n '竴',\n '龄',\n '掭',\n '骟',\n '堡',\n '确',\n '街',\n '沌',\n '恨',\n '壮',\n '弄',\n '鞴',\n '剿',\n '貅',\n '路',\n '杠',\n '豚',\n '澜',\n '靼',\n '擐',\n '租',\n '媪',\n '彖',\n '逢',\n '撺',\n '盗',\n '呑',\n '锥',\n '栎',\n '唧',\n '翩',\n '倥',\n '虽',\n '郏',\n '钒',\n '雉',\n '捒',\n '官',\n '酷',\n '樽',\n '房',\n '屣',\n '堌',\n '蒍',\n '悌',\n '④',\n '蛳',\n '俱',\n '慢',\n '筇',\n '框',\n '椽',\n '债',\n '吭',\n '柱',\n '夤',\n '嘈',\n '骺',\n '趹',\n '刓',\n '豕',\n '噢',\n 'J',\n '论',\n '俞',\n '仙',\n '碰',\n '经',\n '铋',\n '⑤',\n '顽',\n '曲',\n '得',\n '汪',\n '浒',\n '际',\n '嘏',\n '扮',\n '祊',\n '嵋',\n '‘',\n '牒',\n '禮',\n '粒',\n '籀',\n '闱',\n '刍',\n '邕',\n '美',\n '苫',\n '靺',\n '铹',\n '莰',\n '蔑',\n '敵',\n '逑',\n '锬',\n '宸',\n '鞥',\n '匝',\n '褀',\n '菅',\n '逊',\n '脱',\n '晔',\n '罾',\n '郝',\n '恰',\n '丟',\n '芩',\n '枷',\n '鹩',\n 'a',\n '夙',\n '述',\n '钢',\n '瀵',\n '铧',\n '翱',\n '尧',\n '醮',\n '&',\n '鳐',\n '懲',\n '濩',\n '树',\n '劵',\n '虾',\n '砚',\n '腄',\n '罟',\n '硖',\n '崩',\n '埘',\n '╱',\n '血',\n '觯',\n '巂',\n '栀',\n '萏',\n '雪',\n '眵',\n '白',\n '新',\n '靶',\n '猪',\n '亻',\n '窬',\n 'Ⅳ',\n '麽',\n '遄',\n '沏',\n '茅',\n '笋',\n '甬',\n '潔',\n '悛',\n '幕',\n '鹤',\n '悴',\n '耻',\n '觜',\n '滞',\n '己',\n '鏂',\n '肛',\n '婤',\n '嘞',\n '蘸',\n '胴',\n '柿',\n '穗',\n '咯',\n '嵕',\n '蜣',\n '僰',\n '玃',\n '细',\n '▏',\n '戗',\n '尘',\n '仄',\n '子',\n '历',\n '翌',\n '烀',\n '晞',\n '桷',\n '藕',\n '啄',\n '腐',\n '瘥',\n '诣',\n '彗',\n '捭',\n '懑',\n '陛',\n '傥',\n '沚',\n '贯',\n '﹑',\n '雒',\n '航',\n '跬',\n '晓',\n '赢',\n '鸭',\n '臊',\n '闳',\n '稲',\n '阁',\n '鼋',\n '‰',\n '个',\n '農',\n '匮',\n '辚',\n '滗',\n '桢',\n '詈',\n '绗',\n '馇',\n '蜓',\n '专',\n '余',\n '鳉',\n '稚',\n '午',\n '珍',\n '癃',\n '钵',\n '档',\n '颍',\n '厕',\n '岭',\n '祓',\n '诂',\n '襙',\n '炙',\n '枯',\n '锦',\n '袤',\n '桊',\n '嗓',\n '䘵',\n '嫂',\n '丰',\n '苎',\n '梦',\n '早',\n '菱',\n '钱',\n '灯',\n '钮',\n '锓',\n '豐',\n '蝤',\n '协',\n 'h',\n '鼓',\n '燕',\n '覺',\n '涮',\n '呗',\n '専',\n '篓',\n '玷',\n '褓',\n '从',\n '鲍',\n '羧',\n '俭',\n '萌',\n '樣',\n '颜',\n '谷',\n '夹',\n '囫',\n '』',\n '缙',\n '鹰',\n '条',\n '状',\n '沨',\n '因',\n '莺',\n '楼',\n '扰',\n '禢',\n '砧',\n '埔',\n '纩',\n '臭',\n '茶',\n '妹',\n '莼',\n '境',\n '山',\n '诘',\n '蒌',\n '唤',\n '仃',\n '眄',\n '田',\n '畼',\n '缱',\n '祘',\n '痴',\n '揍',\n '猾',\n '甙',\n '躲',\n '返',\n '砝',\n '叽',\n '苟',\n '肭',\n '悖',\n '嫣',\n '凋',\n '踞',\n '勢',\n '弃',\n '般',\n '赤',\n '佣',\n '嘘',\n '智',\n '寒',\n '旆',\n '咎',\n '戊',\n '温',\n '昙',\n '蝄',\n '掉',\n '冤',\n '凍',\n '一',\n '鋼',\n '茏',\n '兼',\n '昃',\n '峤',\n '挟',\n '０',\n '顾',\n '颅',\n '*',\n '遆',\n '硅',\n '烯',\n '眊',\n '鳘',\n '下',\n '雾',\n '癖',\n '贮',\n '缴',\n '升',\n '劲',\n '婞',\n '掇',\n '梯',\n '壬',\n '撮',\n '绑',\n '氣',\n '薤',\n '兔',\n '赟',\n '漕',\n '签',\n '顇',\n '砭',\n '鸼',\n '明',\n '佧',\n '鹗',\n '哉',\n '席',\n '趁',\n '砖',\n '澌',\n '撤',\n '萨',\n '熔',\n '蚝',\n '狮',\n '夔',\n '介',\n '青',\n '喈',\n '郂',\n '埝',\n '狗',\n '哚',\n '咪',\n '材',\n '跑',\n '炗',\n '龉',\n '髓',\n '衣',\n '觀',\n '淋',\n '寄',\n '羮',\n '抵',\n '恁',\n '藿',\n '蜢',\n '甜',\n '兽',\n '洒',\n '眶',\n '薯',\n '绷',\n '颀',\n '骑',\n '鲻',\n '｜',\n 'q',\n '繄',\n '丝',\n '焙',\n '瑕',\n '童',\n '豸',\n '讨',\n '钿',\n '艮',\n '踧',\n '幽',\n '焰',\n '宽',\n '址',\n '鸩',\n '堉',\n '音',\n '擅',\n '铞',\n '埌',\n '宙',\n '_',\n '钥',\n '承',\n '率',\n '噬',\n '凌',\n '程',\n '蚕',\n '嘣',\n '饭',\n '橉',\n '径',\n '１',\n '鄏',\n '袜',\n '孙',\n '樊',\n '窦',\n '牦',\n '歡',\n '罕',\n '蓉',\n '诩',\n '㧎',\n '责',\n '豢',\n '逅',\n '甘',\n '礶',\n '镥',\n '穂',\n '到',\n '檑',\n '皇',\n '泖',\n '腱',\n '郤',\n '竞',\n '竽',\n '溴',\n '木',\n '蛀',\n '蛟',\n '燧',\n '鹳',\n '谵',\n '钳',\n '魔',\n '链',\n '咆',\n '荡',\n '婳',\n '冢',\n '鲧',\n '昝',\n '※',\n '倫',\n '才',\n '簿',\n '醫',\n '吕',\n '姗',\n 'Ｌ',\n '俺',\n '隳',\n '鮮',\n '衩',\n '鲆',\n '崟',\n '鲹',\n '岗',\n '镇',\n '嗄',\n '硪',\n '盎',\n '氟',\n '笪',\n '今',\n '公',\n '尽',\n '佬',\n '骧',\n '驻',\n '翼',\n '咚',\n '盱',\n '镎',\n '浈',\n '谅',\n '洟',\n '嘭',\n '跶',\n '蔹',\n '咭',\n '妁',\n '殚',\n '砷',\n '购',\n '犸',\n '哄',\n '笸',\n '喂',\n '赋',\n '倓',\n '项',\n '臧',\n '梳',\n '笏',\n '鹝',\n '昭',\n '罿',\n '镄',\n 'П',\n '湯',\n 'U',\n '绐',\n '绂',\n '鸬',\n '毐',\n '台',\n '鈴',\n '憾',\n '痰',\n '缭',\n '绒',\n '赁',\n '效',\n '哝',\n '─',\n '偆',\n '泗',\n '谇',\n '貘',\n '搜',\n '阗',\n '個',\n '艟',\n '嗔',\n '正',\n '筛',\n '鼷',\n '摛',\n '馀',\n '坡',\n '卓',\n '厥',\n '睾',\n '雯',\n '篷',\n '狰',\n '掀',\n '夫',\n '靛',\n '伻',\n '茇',\n '顧',\n '猕',\n '占',\n '俟',\n '兄',\n '垡',\n '兆',\n '铃',\n '屙',\n '轵',\n '銮',\n '磲',\n '桤',\n '跷',\n '缳',\n '粘',\n '袢',\n '尬',\n '獘',\n '社',\n '彬',\n '哨',\n '煳',\n '莊',\n '教',\n '鸸',\n '窖',\n '晰',\n '捻',\n '环',\n '廿',\n '驶',\n '椠',\n '熟',\n '赓',\n '挥',\n '兵',\n '洚',\n '桧',\n '埼',\n '嘀',\n '哎',\n '柞',\n '悄',\n '调',\n '洼',\n '蛇',\n '铬',\n '蝇',\n '倆',\n '谂',\n '姻',\n '怕',\n '瑙',\n '算',\n '惮',\n '遥',\n '惟',\n '甫',\n '玺',\n '袈',\n '税',\n '玟',\n '械',\n '擗',\n '淤',\n '溟',\n '揞',\n '纲',\n '谤',\n '條',\n '翕',\n '荛',\n '忾',\n '馿',\n '糖',\n '檗',\n '垱',\n '┐',\n '躜',\n '缒',\n '您',\n '蹶',\n '合',\n '数',\n '斟',\n '粲',\n '玖',\n '淞',\n '孰',\n '觎',\n 'M',\n '嫪',\n '毽',\n '桩',\n '蹦',\n '亹',\n '胾',\n '亲',\n '痉',\n '莙',\n '捐',\n '烁',\n '瓣',\n '邀',\n '但',\n '误',\n '饻',\n '妄',\n '镱',\n '民',\n '嗳',\n '竦',\n '柰',\n '脒',\n '斓',\n '瞟',\n '拱',\n '霾',\n '粜',\n '腽',\n '咬',\n '唿',\n '礻',\n 'y',\n '褒',\n '郪',\n '熰',\n '梻',\n '甭',\n '处',\n '拖',\n '蜉',\n '鄱',\n '絲',\n '宠',\n '瞵',\n '荷',\n '靓',\n '喻',\n '阢',\n '伫',\n '担',\n '朐',\n '墙',\n '儣',\n '胄',\n '簏',\n '皆',\n '踌',\n '萃',\n '命',\n '滟',\n '睹',\n '叁',\n '蟮',\n '東',\n '﹖',\n '式',\n '營',\n '疠',\n '醳',\n '尔',\n '購',\n '吒',\n '柴',\n '途',\n '力',\n '疰',\n '寳',\n '萬',\n '挨',\n '碥',\n '牍',\n '嘻',\n '柃',\n '剡',\n '徝',\n '杖',\n '螺',\n '祈',\n '産',\n '煽',\n '讽',\n '瞭',\n '由',\n '牀',\n '涉',\n '暴',\n '枚',\n '仰',\n '它',\n '胤',\n '驯',\n '港',\n '寵',\n '熄',\n '蛮',\n '务',\n '殃',\n '亸',\n '涢',\n '妫',\n '粥',\n '扦',\n '寺',\n '抿',\n '湃',\n 'C',\n '脚',\n '涸',\n '动',\n '務',\n '镭',\n '检',\n '釂',\n '耳',\n '榦',\n '怆',\n '氨',\n '瘳',\n '钽',\n '牚',\n '负',\n '纂',\n '獬',\n '息',\n '婄',\n '襞',\n '囹',\n '酰',\n '扑',\n '臛',\n '价',\n '褡',\n '篼',\n '媢',\n '酊',\n '腋',\n '愣',\n '垯',\n '喃',\n '牾',\n '犨',\n '蜂',\n '诹',\n '迂',\n '槑',\n '好',\n '褰',\n '咝',\n '③',\n '劐',\n '骄',\n '腉',\n '仕',\n '叵',\n '磅',\n '金',\n '皁',\n '勍',\n '煮',\n '鍪',\n '筚',\n '吲',\n '艰',\n '床',\n '叛',\n '﹔',\n '喜',\n '齑',\n '昧',\n '乎',\n '谲',\n '匈',\n '麒',\n '身',\n '唑',\n '鲤',\n '栂',\n '垭',\n '殪',\n '沪',\n '苌',\n '濡',\n '蒎',\n '遏',\n '®',\n '质',\n '纫',\n '罐',\n '瞍',\n '柄',\n '呼',\n '锱',\n '盔',\n '搋',\n '烛',\n '喉',\n '奈',\n '赦',\n '轘',\n '鉴',\n '瓒',\n '铰',\n '恽',\n '腠',\n '韶',\n '胼',\n '侄',\n '珂',\n '鹕',\n '䝉',\n '呤',\n '椁',\n '岳',\n '汲',\n '疤',\n '绊',\n '涂',\n '乾',\n '噎',\n '兑',\n '絜',\n '嘧',\n '蚯',\n '们',\n '蝉',\n '玛',\n '魁',\n '黻',\n '振',\n '冥',\n '报',\n '窟',\n '笱',\n '喊',\n '瓴',\n '喾',\n '説',\n '雹',\n '恫',\n 'ａ',\n '颧',\n '給',\n '宅',\n '鞧',\n '嬷',\n '鼾',\n '笔',\n '鲉',\n '匹',\n '蠕',\n '愍',\n '氽',\n '赐',\n '畔',\n '絪',\n '洴',\n '审',\n '窂',\n '褔',\n '狯',\n '谑',\n '毳',\n '右',\n '疣',\n '鲙',\n '堃',\n '瓜',\n '…',\n '崆',\n '钫',\n '樭',\n '鲛',\n '砂',\n '筋',\n '犏',\n '乱',\n '入',\n '浐',\n '膙',\n '厚',\n '獗',\n '覌',\n '焦',\n '罃',\n '宬',\n '隍',\n '荃',\n '醜',\n '厉',\n '艇',\n '娟',\n '樂',\n '筲',\n '洛',\n '唼',\n '诜',\n '馑',\n '香',\n '缛',\n '运',\n '祟',\n '踩',\n '陲',\n '叔',\n '潞',\n '二',\n '搠',\n '祼',\n '瀘',\n '蒋',\n '樗',\n '麦',\n '鸦',\n '棻',\n '古',\n '鹠',\n '怊',\n '裾',\n '够',\n '璧',\n '晡',\n '擘',\n '毂',\n '御',\n '葚',\n '忱',\n '觞',\n '瑁',\n '唇',\n '罡',\n '剽',\n '殡',\n '沛',\n '帻',\n '举',\n '瞓',\n '谬',\n '溝',\n '言',\n '哽',\n '婿',\n '猿',\n '跗',\n '獴',\n '俜',\n '呙',\n '弗',\n '凿',\n '窭',\n '铌',\n '友',\n '唉',\n '怫',\n '荘']\n"
  },
  {
    "path": "ddddocr/compat/__init__.py",
    "content": "# coding=utf-8\n\"\"\"\n兼容性模块\n提供向后兼容性支持，确保现有代码无需修改即可使用\n\"\"\"\n\nfrom .v1 import DdddOcr\n\n__all__ = ['DdddOcr']\n"
  },
  {
    "path": "ddddocr/compat/v1.py",
    "content": "# coding=utf-8\n\"\"\"\n向后兼容性支持模块\n提供与原始DdddOcr类完全兼容的接口\n\"\"\"\n\nfrom typing import Union, List, Optional, Dict, Any, Tuple\nimport pathlib\nfrom PIL import Image\n\nfrom ..core.ocr_engine import OCREngine\nfrom ..core.detection_engine import DetectionEngine\nfrom ..core.slide_engine import SlideEngine\nfrom ..utils.exceptions import DDDDOCRError\nfrom ..utils.validators import validate_model_config\n\n\nclass DdddOcr:\n    \"\"\"\n    DDDDOCR主类 - 向后兼容版本\n    \n    这个类保持与原始DdddOcr类完全相同的接口，\n    但内部使用新的模块化架构实现\n    \"\"\"\n    \n    def __init__(self, ocr: bool = True, det: bool = False, old: bool = False, beta: bool = False,\n                 use_gpu: bool = False, device_id: int = 0, show_ad: bool = True, \n                 import_onnx_path: str = \"\", charsets_path: str = \"\"):\n        \"\"\"\n        初始化DDDDOCR\n        \n        Args:\n            ocr: 是否启用OCR功能\n            det: 是否启用目标检测功能\n            old: 是否使用旧版OCR模型\n            beta: 是否使用beta版OCR模型\n            use_gpu: 是否使用GPU\n            device_id: GPU设备ID\n            show_ad: 是否显示广告信息\n            import_onnx_path: 自定义ONNX模型路径\n            charsets_path: 自定义字符集路径\n        \"\"\"\n        # 显示广告信息（保持原有行为）\n        if show_ad:\n            print(\"欢迎使用ddddocr，本项目专注带动行业内卷，个人博客:wenanzhe.com\")\n            print(\"训练数据支持来源于:http://146.56.204.113:19199/preview\")\n            print(\"爬虫框架feapder可快速一键接入，快速开启爬虫之旅：https://github.com/Boris-code/feapder\")\n            print(\"谷歌reCaptcha验证码 / hCaptcha验证码 / funCaptcha验证码商业级识别接口：https://yescaptcha.com/i/NSwk7i\")\n        \n        # 兼容性处理：确保PIL有ANTIALIAS属性\n        if not hasattr(Image, 'ANTIALIAS'):\n            setattr(Image, 'ANTIALIAS', Image.LANCZOS)\n        \n        # 验证配置参数\n        validate_model_config(ocr, det, old, beta, use_gpu, device_id)\n        \n        # 保存配置\n        self.ocr_enabled = ocr\n        self.det_enabled = det\n        self.old = old\n        self.beta = beta\n        self.use_gpu = use_gpu\n        self.device_id = device_id\n        self.import_onnx_path = import_onnx_path\n        self.charsets_path = charsets_path\n        \n        # 初始化引擎\n        self.ocr_engine: Optional[OCREngine] = None\n        self.detection_engine: Optional[DetectionEngine] = None\n        self.slide_engine: Optional[SlideEngine] = None\n        \n        # 根据配置初始化相应的引擎\n        if det:\n            # 目标检测模式\n            self.det = True\n            self.detection_engine = DetectionEngine(use_gpu, device_id)\n        elif ocr or import_onnx_path:\n            # OCR模式\n            self.det = False\n            self.ocr_engine = OCREngine(\n                use_gpu=use_gpu,\n                device_id=device_id,\n                old=old,\n                beta=beta,\n                import_onnx_path=import_onnx_path,\n                charsets_path=charsets_path\n            )\n        else:\n            # 滑块模式\n            self.det = False\n            \n        # 滑块引擎总是可用\n        self.slide_engine = SlideEngine()\n    \n    def classification(self, img: Union[bytes, str, pathlib.PurePath, Image.Image], \n                      png_fix: bool = False, probability: bool = False,\n                      color_filter_colors: Optional[List[str]] = None,\n                      color_filter_custom_ranges: Optional[List[Tuple[Tuple[int, int, int], Tuple[int, int, int]]]] = None) -> Union[str, Dict[str, Any]]:\n        \"\"\"\n        OCR识别方法\n        \n        Args:\n            img: 图片数据（bytes、str、pathlib.PurePath或PIL.Image）\n            png_fix: 是否修复PNG透明背景问题\n            probability: 是否返回概率信息\n            color_filter_colors: 颜色过滤预设颜色列表，如 ['red', 'blue']\n            color_filter_custom_ranges: 自定义HSV颜色范围列表，如 [((0,50,50), (10,255,255))]\n        \n        Returns:\n            识别结果文本或包含概率信息的字典\n            \n        Raises:\n            DDDDOCRError: 当功能未启用或识别失败时\n        \"\"\"\n        if self.det:\n            raise DDDDOCRError(\"当前识别类型为目标检测\")\n        \n        if not self.ocr_engine:\n            raise DDDDOCRError(\"OCR功能未初始化\")\n        \n        return self.ocr_engine.predict(\n            image=img,\n            png_fix=png_fix,\n            probability=probability,\n            color_filter_colors=color_filter_colors,\n            color_filter_custom_ranges=color_filter_custom_ranges\n        )\n    \n    def detection(self, img: Union[bytes, str, pathlib.PurePath, Image.Image]) -> List[List[int]]:\n        \"\"\"\n        目标检测方法\n        \n        Args:\n            img: 图片数据\n            \n        Returns:\n            检测到的边界框列表\n            \n        Raises:\n            DDDDOCRError: 当功能未启用或检测失败时\n        \"\"\"\n        if not self.det:\n            raise DDDDOCRError(\"当前识别类型为OCR\")\n        \n        if not self.detection_engine:\n            raise DDDDOCRError(\"目标检测功能未初始化\")\n        \n        return self.detection_engine.predict(img)\n    \n    def slide_match(self, target_img: Union[bytes, str, pathlib.PurePath, Image.Image],\n                   background_img: Union[bytes, str, pathlib.PurePath, Image.Image],\n                   simple_target: bool = False) -> Dict[str, Any]:\n        \"\"\"\n        滑块匹配方法\n        \n        Args:\n            target_img: 滑块图片\n            background_img: 背景图片\n            simple_target: 是否为简单滑块\n            \n        Returns:\n            匹配结果字典\n            \n        Raises:\n            DDDDOCRError: 当匹配失败时\n        \"\"\"\n        if not self.slide_engine:\n            raise DDDDOCRError(\"滑块功能未初始化\")\n        \n        return self.slide_engine.slide_match(target_img, background_img, simple_target)\n    \n    def slide_comparison(self, target_img: Union[bytes, str, pathlib.PurePath, Image.Image],\n                        background_img: Union[bytes, str, pathlib.PurePath, Image.Image]) -> Dict[str, Any]:\n        \"\"\"\n        滑块比较方法\n        \n        Args:\n            target_img: 带坑位的图片\n            background_img: 完整背景图片\n            \n        Returns:\n            比较结果字典\n            \n        Raises:\n            DDDDOCRError: 当比较失败时\n        \"\"\"\n        if not self.slide_engine:\n            raise DDDDOCRError(\"滑块功能未初始化\")\n        \n        return self.slide_engine.slide_comparison(target_img, background_img)\n    \n    def set_ranges(self, charset_range: Union[int, str, List[str]]) -> None:\n        \"\"\"\n        设置字符集范围\n        \n        Args:\n            charset_range: 字符集范围参数\n            \n        Raises:\n            DDDDOCRError: 当OCR功能未启用时\n        \"\"\"\n        if self.det:\n            raise DDDDOCRError(\"目标检测模式不支持字符集设置\")\n        \n        if not self.ocr_engine:\n            raise DDDDOCRError(\"OCR功能未初始化\")\n        \n        self.ocr_engine.set_charset_range(charset_range)\n    \n    def get_charset(self) -> List[str]:\n        \"\"\"\n        获取字符集\n        \n        Returns:\n            字符集列表\n            \n        Raises:\n            DDDDOCRError: 当OCR功能未启用时\n        \"\"\"\n        if self.det:\n            raise DDDDOCRError(\"目标检测模式不支持字符集获取\")\n        \n        if not self.ocr_engine:\n            raise DDDDOCRError(\"OCR功能未初始化\")\n        \n        return self.ocr_engine.get_charset()\n    \n    def switch_device(self, use_gpu: bool, device_id: int = 0) -> None:\n        \"\"\"\n        切换计算设备\n        \n        Args:\n            use_gpu: 是否使用GPU\n            device_id: GPU设备ID\n        \"\"\"\n        self.use_gpu = use_gpu\n        self.device_id = device_id\n        \n        # 更新所有已初始化的引擎\n        if self.ocr_engine:\n            self.ocr_engine.switch_device(use_gpu, device_id)\n        \n        if self.detection_engine:\n            self.detection_engine.switch_device(use_gpu, device_id)\n    \n    def get_model_info(self) -> Dict[str, Any]:\n        \"\"\"\n        获取模型信息\n        \n        Returns:\n            模型信息字典\n        \"\"\"\n        info = {\n            'ocr_enabled': self.ocr_enabled,\n            'det_enabled': self.det_enabled,\n            'use_gpu': self.use_gpu,\n            'device_id': self.device_id\n        }\n        \n        if self.ocr_engine:\n            info['ocr_model'] = self.ocr_engine.get_model_info()\n        \n        if self.detection_engine:\n            info['detection_model'] = self.detection_engine.get_model_info()\n        \n        return info\n    \n    def cleanup(self) -> None:\n        \"\"\"清理所有资源\"\"\"\n        if self.ocr_engine:\n            self.ocr_engine.cleanup()\n        \n        if self.detection_engine:\n            self.detection_engine.cleanup()\n        \n        if self.slide_engine:\n            self.slide_engine.cleanup()\n    \n    def __del__(self):\n        \"\"\"析构函数\"\"\"\n        self.cleanup()\n    \n    def __repr__(self) -> str:\n        return f\"DdddOcr(ocr={self.ocr_enabled}, det={self.det_enabled}, use_gpu={self.use_gpu})\"\n"
  },
  {
    "path": "ddddocr/core/__init__.py",
    "content": "# coding=utf-8\n\"\"\"\n核心功能模块\n提供OCR识别、目标检测、滑块匹配等核心功能\n\"\"\"\n\nfrom .base import BaseEngine\nfrom .ocr_engine import OCREngine\nfrom .detection_engine import DetectionEngine\nfrom .slide_engine import SlideEngine\n\n__all__ = [\n    'BaseEngine',\n    'OCREngine',\n    'DetectionEngine',\n    'SlideEngine',\n    'DdddOcr'\n]\n\n\ndef __getattr__(name: str):\n    # 延迟导入，避免 compat.v1 -> core -> compat.v1 的循环依赖\n    if name == 'DdddOcr':\n        from ..compat.v1 import DdddOcr as _DdddOcr\n        return _DdddOcr\n    raise AttributeError(f\"module {__name__!r} has no attribute {name!r}\")\n"
  },
  {
    "path": "ddddocr/core/base.py",
    "content": "# coding=utf-8\n\"\"\"\n基础引擎类\n定义所有引擎的基础接口和通用功能\n\"\"\"\n\nfrom abc import ABC, abstractmethod\nfrom typing import Any, Dict, Optional\nimport onnxruntime\n\nfrom ..models.model_loader import ModelLoader\nfrom ..utils.exceptions import ModelLoadError\n\n\nclass BaseEngine(ABC):\n    \"\"\"基础引擎抽象类\"\"\"\n    \n    def __init__(self, use_gpu: bool = False, device_id: int = 0):\n        \"\"\"\n        初始化基础引擎\n        \n        Args:\n            use_gpu: 是否使用GPU\n            device_id: GPU设备ID\n        \"\"\"\n        self.use_gpu = use_gpu\n        self.device_id = device_id\n        self.model_loader = ModelLoader(use_gpu, device_id)\n        self.session: Optional[onnxruntime.InferenceSession] = None\n        self.is_initialized = False\n    \n    @abstractmethod\n    def initialize(self, **kwargs) -> None:\n        \"\"\"\n        初始化引擎\n        \n        Args:\n            **kwargs: 初始化参数\n            \n        Raises:\n            ModelLoadError: 当初始化失败时\n        \"\"\"\n        pass\n    \n    @abstractmethod\n    def predict(self, *args, **kwargs) -> Any:\n        \"\"\"\n        执行预测\n        \n        Args:\n            *args: 位置参数\n            **kwargs: 关键字参数\n            \n        Returns:\n            预测结果\n        \"\"\"\n        pass\n    \n    def get_model_info(self) -> Dict[str, Any]:\n        \"\"\"\n        获取模型信息\n        \n        Returns:\n            模型信息字典\n        \"\"\"\n        if self.session:\n            return self.model_loader.get_model_info(self.session)\n        return {'error': '模型未加载'}\n    \n    def is_ready(self) -> bool:\n        \"\"\"\n        检查引擎是否就绪\n        \n        Returns:\n            是否就绪\n        \"\"\"\n        return self.is_initialized and self.session is not None\n    \n    def switch_device(self, use_gpu: bool, device_id: int = 0) -> None:\n        \"\"\"\n        切换计算设备\n        \n        Args:\n            use_gpu: 是否使用GPU\n            device_id: GPU设备ID\n        \"\"\"\n        if self.use_gpu != use_gpu or self.device_id != device_id:\n            self.use_gpu = use_gpu\n            self.device_id = device_id\n            self.model_loader.switch_provider(use_gpu, device_id)\n            \n            # 如果已经初始化，需要重新加载模型\n            if self.is_initialized:\n                self._reload_model()\n    \n    def _reload_model(self) -> None:\n        \"\"\"重新加载模型（子类可重写）\"\"\"\n        pass\n    \n    def cleanup(self) -> None:\n        \"\"\"清理资源\"\"\"\n        if self.session:\n            del self.session\n            self.session = None\n        self.is_initialized = False\n    \n    def __del__(self):\n        \"\"\"析构函数\"\"\"\n        self.cleanup()\n    \n    def __repr__(self) -> str:\n        return f\"{self.__class__.__name__}(use_gpu={self.use_gpu}, device_id={self.device_id}, ready={self.is_ready()})\"\n"
  },
  {
    "path": "ddddocr/core/detection_engine.py",
    "content": "# coding=utf-8\n\"\"\"\n目标检测引擎\n提供目标检测功能\n\"\"\"\n\nfrom typing import Union, List, Tuple\nimport numpy as np\nfrom PIL import Image\n\nfrom .base import BaseEngine\nfrom ..utils.image_io import load_image_from_input, image_to_numpy\nfrom ..utils.exceptions import ModelLoadError, ImageProcessError, safe_import_opencv\nfrom ..utils.validators import validate_image_input\n\n# 安全导入OpenCV\ncv2 = safe_import_opencv()\n\n\nclass DetectionEngine(BaseEngine):\n    \"\"\"目标检测引擎\"\"\"\n\n    def __init__(self, use_gpu: bool = False, device_id: int = 0):\n        \"\"\"\n        初始化检测引擎\n\n        Args:\n            use_gpu: 是否使用GPU\n            device_id: GPU设备ID\n        \"\"\"\n        super().__init__(use_gpu, device_id)\n        self.initialize()\n\n    def initialize(self, **kwargs) -> None:\n        \"\"\"\n        初始化检测引擎\n\n        Raises:\n            ModelLoadError: 当初始化失败时\n        \"\"\"\n        try:\n            # 加载检测模型\n            self.session = self.model_loader.load_detection_model()\n            self.is_initialized = True\n\n        except Exception as e:\n            raise ModelLoadError(f\"检测引擎初始化失败: {str(e)}\") from e\n\n    def predict(self, image: Union[bytes, str, Image.Image]) -> List[List[int]]:\n        \"\"\"\n        执行目标检测\n\n        Args:\n            image: 输入图像\n\n        Returns:\n            检测到的边界框列表，每个边界框格式为[x1, y1, x2, y2]\n\n        Raises:\n            ImageProcessError: 当图像处理失败时\n            ModelLoadError: 当模型未初始化时\n        \"\"\"\n        if not self.is_ready():\n            raise ModelLoadError(\"检测引擎未初始化\")\n\n        # 验证输入\n        validate_image_input(image)\n\n        try:\n            # 直接使用原始的get_bbox方法\n            if isinstance(image, bytes):\n                return self.get_bbox(image)\n            elif isinstance(image, Image.Image):\n                import io\n                img_bytes = io.BytesIO()\n                image.save(img_bytes, format='PNG')\n                return self.get_bbox(img_bytes.getvalue())\n            else:\n                # 其他类型先转换为PIL Image再处理\n                pil_image = load_image_from_input(image)\n                import io\n                img_bytes = io.BytesIO()\n                pil_image.save(img_bytes, format='PNG')\n                return self.get_bbox(img_bytes.getvalue())\n\n        except Exception as e:\n            raise ImageProcessError(f\"目标检测失败: {str(e)}\") from e\n\n    def preproc(self, img, input_size, swap=(2, 0, 1)):\n        \"\"\"预处理函数（来自原始代码）\"\"\"\n        if len(img.shape) == 3:\n            padded_img = np.ones((input_size[0], input_size[1], 3), dtype=np.uint8) * 114\n        else:\n            padded_img = np.ones(input_size, dtype=np.uint8) * 114\n        r = min(input_size[0] / img.shape[0], input_size[1] / img.shape[1])\n        resized_img = cv2.resize(\n            img,\n            (int(img.shape[1] * r), int(img.shape[0] * r)),\n            interpolation=cv2.INTER_LINEAR,\n        ).astype(np.uint8)\n        padded_img[: int(img.shape[0] * r), : int(img.shape[1] * r)] = resized_img\n        padded_img = padded_img.transpose(swap)\n        padded_img = np.ascontiguousarray(padded_img, dtype=np.float32)\n        return padded_img, r\n\n    def demo_postprocess(self, outputs, img_size, p6=False):\n        \"\"\"后处理函数（来自原始代码）\"\"\"\n        grids = []\n        expanded_strides = []\n        if not p6:\n            strides = [8, 16, 32]\n        else:\n            strides = [8, 16, 32, 64]\n        hsizes = [img_size[0] // stride for stride in strides]\n        wsizes = [img_size[1] // stride for stride in strides]\n        for hsize, wsize, stride in zip(hsizes, wsizes, strides):\n            xv, yv = np.meshgrid(np.arange(wsize), np.arange(hsize))\n            grid = np.stack((xv, yv), 2).reshape(1, -1, 2)\n            grids.append(grid)\n            shape = grid.shape[:2]\n            expanded_strides.append(np.full((*shape, 1), stride))\n        grids = np.concatenate(grids, 1)\n        expanded_strides = np.concatenate(expanded_strides, 1)\n        outputs[..., :2] = (outputs[..., :2] + grids) * expanded_strides\n        outputs[..., 2:4] = np.exp(outputs[..., 2:4]) * expanded_strides\n        return outputs\n\n    def nms(self, boxes, scores, nms_thr):\n        \"\"\"Single class NMS implemented in Numpy.\"\"\"\n        x1 = boxes[:, 0]\n        y1 = boxes[:, 1]\n        x2 = boxes[:, 2]\n        y2 = boxes[:, 3]\n        areas = (x2 - x1 + 1) * (y2 - y1 + 1)\n        order = scores.argsort()[::-1]\n        keep = []\n        while order.size > 0:\n            i = order[0]\n            keep.append(i)\n            xx1 = np.maximum(x1[i], x1[order[1:]])\n            yy1 = np.maximum(y1[i], y1[order[1:]])\n            xx2 = np.minimum(x2[i], x2[order[1:]])\n            yy2 = np.minimum(y2[i], y2[order[1:]])\n            w = np.maximum(0.0, xx2 - xx1 + 1)\n            h = np.maximum(0.0, yy2 - yy1 + 1)\n            inter = w * h\n            ovr = inter / (areas[i] + areas[order[1:]] - inter)\n            inds = np.where(ovr <= nms_thr)[0]\n            order = order[inds + 1]\n        return keep\n\n    def multiclass_nms_class_agnostic(self, boxes, scores, nms_thr, score_thr):\n        \"\"\"Multiclass NMS implemented in Numpy. Class-agnostic version.\"\"\"\n        cls_inds = scores.argmax(1)\n        cls_scores = scores[np.arange(len(cls_inds)), cls_inds]\n        valid_score_mask = cls_scores > score_thr\n        if valid_score_mask.sum() == 0:\n            return None\n        valid_scores = cls_scores[valid_score_mask]\n        valid_boxes = boxes[valid_score_mask]\n        valid_cls_inds = cls_inds[valid_score_mask]\n        keep = self.nms(valid_boxes, valid_scores, nms_thr)\n        if keep:\n            dets = np.concatenate(\n                [valid_boxes[keep], valid_scores[keep, None], valid_cls_inds[keep, None]], 1\n            )\n        return dets\n\n    def multiclass_nms(self, boxes, scores, nms_thr, score_thr):\n        \"\"\"Multiclass NMS implemented in Numpy\"\"\"\n        return self.multiclass_nms_class_agnostic(boxes, scores, nms_thr, score_thr)\n\n    def get_bbox(self, image_bytes):\n        \"\"\"原始的目标检测方法\"\"\"\n        img = cv2.imdecode(np.frombuffer(image_bytes, np.uint8), cv2.IMREAD_COLOR)\n        im, ratio = self.preproc(img, (416, 416))\n        ort_inputs = {self.session.get_inputs()[0].name: im[None, :, :, :]}\n        output = self.session.run(None, ort_inputs)\n        predictions = self.demo_postprocess(output[0], (416, 416))[0]\n        boxes = predictions[:, :4]\n        scores = predictions[:, 4:5] * predictions[:, 5:]\n        boxes_xyxy = np.ones_like(boxes)\n        boxes_xyxy[:, 0] = boxes[:, 0] - boxes[:, 2] / 2.\n        boxes_xyxy[:, 1] = boxes[:, 1] - boxes[:, 3] / 2.\n        boxes_xyxy[:, 2] = boxes[:, 0] + boxes[:, 2] / 2.\n        boxes_xyxy[:, 3] = boxes[:, 1] + boxes[:, 3] / 2.\n        boxes_xyxy /= ratio\n        pred = self.multiclass_nms(boxes_xyxy, scores, nms_thr=0.45, score_thr=0.1)\n        try:\n            final_boxes = pred[:, :4].tolist()\n            result = []\n            for b in final_boxes:\n                if b[0] < 0:\n                    x_min = 0\n                else:\n                    x_min = int(b[0])\n                if b[1] < 0:\n                    y_min = 0\n                else:\n                    y_min = int(b[1])\n                if b[2] > img.shape[1]:\n                    x_max = int(img.shape[1])\n                else:\n                    x_max = int(b[2])\n                if b[3] > img.shape[0]:\n                    y_max = int(img.shape[0])\n                else:\n                    y_max = int(b[3])\n                result.append([x_min, y_min, x_max, y_max])\n        except Exception as e:\n            return []\n        return result\n"
  },
  {
    "path": "ddddocr/core/ocr_engine.py",
    "content": "# coding=utf-8\n\"\"\"\nOCR识别引擎\n提供文字识别功能\n\"\"\"\n\nfrom typing import Union, List, Optional, Dict, Any, Tuple\nimport numpy as np\nfrom PIL import Image\n\nfrom .base import BaseEngine\nfrom ..models.charset_manager import CharsetManager\nfrom ..preprocessing.color_filter import ColorFilter\nfrom ..preprocessing.image_processor import ImageProcessor\nfrom ..utils.image_io import load_image_from_input, png_rgba_black_preprocess\nfrom ..utils.exceptions import ModelLoadError, ImageProcessError\nfrom ..utils.validators import validate_image_input\n\n\nclass OCREngine(BaseEngine):\n    \"\"\"OCR识别引擎\"\"\"\n    \n    def __init__(self, use_gpu: bool = False, device_id: int = 0, \n                 old: bool = False, beta: bool = False,\n                 import_onnx_path: str = \"\", charsets_path: str = \"\"):\n        \"\"\"\n        初始化OCR引擎\n        \n        Args:\n            use_gpu: 是否使用GPU\n            device_id: GPU设备ID\n            old: 是否使用旧版模型\n            beta: 是否使用beta版模型\n            import_onnx_path: 自定义模型路径\n            charsets_path: 自定义字符集路径\n        \"\"\"\n        super().__init__(use_gpu, device_id)\n        \n        self.old = old\n        self.beta = beta\n        self.import_onnx_path = import_onnx_path\n        self.charsets_path = charsets_path\n        self.use_import_onnx = bool(import_onnx_path)\n        \n        # 字符集管理器\n        self.charset_manager = CharsetManager()\n        \n        # 模型配置\n        self.word = False\n        self.resize = []\n        self.channel = 1\n        \n        # 初始化引擎\n        self.initialize()\n    \n    def initialize(self, **kwargs) -> None:\n        \"\"\"\n        初始化OCR引擎\n        \n        Raises:\n            ModelLoadError: 当初始化失败时\n        \"\"\"\n        try:\n            if self.use_import_onnx:\n                # 加载自定义模型\n                self.session, charset_info = self.model_loader.load_custom_model(\n                    self.import_onnx_path, self.charsets_path\n                )\n                \n                # 设置模型配置\n                self.charset_manager.charset = charset_info['charset']\n\n                # 初始化有效字符索引（使用完整字符集）\n                self.charset_manager._update_valid_indices()\n\n                self.word = charset_info['word']\n                self.resize = charset_info['image']\n                self.channel = charset_info['channel']\n            else:\n                # 加载默认模型\n                self.session = self.model_loader.load_ocr_model(self.old, self.beta)\n                \n                # 加载默认字符集\n                self.charset_manager.load_default_charset(self.old, self.beta)\n\n                # 初始化有效字符索引（使用完整字符集）\n                self.charset_manager._update_valid_indices()\n\n                # 设置默认配置\n                self.word = False\n                self.resize = [64, 64]  # 默认尺寸\n                self.channel = 1\n            \n            self.is_initialized = True\n            \n        except Exception as e:\n            raise ModelLoadError(f\"OCR引擎初始化失败: {str(e)}\") from e\n    \n    def predict(self, image: Union[bytes, str, Image.Image], \n                png_fix: bool = False, probability: bool = False,\n                color_filter_colors: Optional[List[str]] = None,\n                color_filter_custom_ranges: Optional[List[Tuple[Tuple[int, int, int], Tuple[int, int, int]]]] = None,\n                charset_range: Optional[Union[int, str, List[str]]] = None) -> Union[str, Dict[str, Any]]:\n        \"\"\"\n        执行OCR识别\n        \n        Args:\n            image: 输入图像\n            png_fix: 是否修复PNG透明背景\n            probability: 是否返回概率信息\n            color_filter_colors: 颜色过滤预设颜色列表\n            color_filter_custom_ranges: 自定义HSV颜色范围列表\n            charset_range: 字符集范围限制\n            \n        Returns:\n            识别结果文本或包含概率信息的字典\n            \n        Raises:\n            ImageProcessError: 当图像处理失败时\n            ModelLoadError: 当模型未初始化时\n        \"\"\"\n        if not self.is_ready():\n            raise ModelLoadError(\"OCR引擎未初始化\")\n        \n        # 验证输入\n        validate_image_input(image)\n        \n        try:\n            # 加载图像\n            pil_image = load_image_from_input(image)\n            \n            # 应用颜色过滤\n            if color_filter_colors or color_filter_custom_ranges:\n                try:\n                    color_filter = ColorFilter(colors=color_filter_colors, \n                                             custom_ranges=color_filter_custom_ranges)\n                    pil_image = color_filter.filter_image(pil_image)\n                except Exception as e:\n                    print(f\"颜色过滤警告: {str(e)}，将跳过颜色过滤步骤\")\n            \n            # 设置字符集范围\n            if charset_range is not None:\n                self.charset_manager.set_ranges(charset_range)\n            else:\n                # 确保在没有设置字符集范围时，有效索引被正确初始化\n                self.charset_manager._update_valid_indices()\n            \n            # 预处理图像\n            processed_image = self._preprocess_image(pil_image, png_fix)\n            \n            # 执行推理\n            result = self._inference(processed_image, probability)\n            \n            return result\n            \n        except Exception as e:\n            raise ImageProcessError(f\"OCR识别失败: {str(e)}\") from e\n    \n    def _preprocess_image(self, image: Image.Image, png_fix: bool) -> np.ndarray:\n        \"\"\"\n        预处理图像\n        \n        Args:\n            image: 输入图像\n            png_fix: 是否修复PNG透明背景\n            \n        Returns:\n            预处理后的numpy数组\n        \"\"\"\n        try:\n            # 处理PNG透明背景\n            if png_fix and image.mode == 'RGBA':\n                image = png_rgba_black_preprocess(image)\n            \n            # 调整图像尺寸\n            if not self.use_import_onnx:\n                # 默认模型的预处理\n                target_height = 64\n                target_width = int(image.size[0] * (target_height / image.size[1]))\n                image = ImageProcessor.resize_image(image, (target_width, target_height))\n                image = ImageProcessor.convert_to_grayscale(image)\n            else:\n                # 自定义模型的预处理\n                if self.resize[0] == -1:\n                    if self.word:\n                        image = ImageProcessor.resize_image(image, (self.resize[1], self.resize[1]))\n                    else:\n                        target_height = self.resize[1]\n                        target_width = int(image.size[0] * (target_height / image.size[1]))\n                        image = ImageProcessor.resize_image(image, (target_width, target_height))\n                else:\n                    image = ImageProcessor.resize_image(image, (self.resize[0], self.resize[1]))\n                \n                # 根据通道数转换\n                if self.channel == 1:\n                    image = ImageProcessor.convert_to_grayscale(image)\n            \n            # 转换为numpy数组并标准化\n            img_array = np.array(image).astype(np.float32)\n            \n            # 标准化到[0,1]\n            img_array = img_array / 255.0\n            \n            # 调整维度\n            if len(img_array.shape) == 2:\n                img_array = np.expand_dims(img_array, axis=0)  # 添加通道维度\n            elif len(img_array.shape) == 3:\n                img_array = img_array.transpose(2, 0, 1)  # HWC -> CHW\n            \n            img_array = np.expand_dims(img_array, axis=0)  # 添加batch维度\n            \n            return img_array\n            \n        except Exception as e:\n            raise ImageProcessError(f\"图像预处理失败: {str(e)}\") from e\n    \n    def _inference(self, image_array: np.ndarray, probability: bool) -> Union[str, Dict[str, Any]]:\n        \"\"\"\n        执行模型推理\n        \n        Args:\n            image_array: 预处理后的图像数组\n            probability: 是否返回概率信息\n            \n        Returns:\n            识别结果\n        \"\"\"\n        try:\n            # 获取输入名称\n            input_name = self.session.get_inputs()[0].name\n            \n            # 执行推理\n            outputs = self.session.run(None, {input_name: image_array})\n            \n            # 处理输出\n            if probability:\n                return self._process_probability_output(outputs[0])\n            else:\n                return self._process_text_output(outputs[0])\n                \n        except Exception as e:\n            raise ModelLoadError(f\"模型推理失败: {str(e)}\") from e\n    \n    def _process_text_output(self, output: np.ndarray) -> str:\n        \"\"\"\n        处理文本输出\n        \n        Args:\n            output: 模型输出\n            \n        Returns:\n            识别的文本\n        \"\"\"\n        try:\n            # 获取预测结果\n            if len(output.shape) == 3:\n                # 序列输出 (sequence_length, batch_size, num_classes) 或 (batch_size, sequence_length, num_classes)\n                # 需要判断哪个维度是batch_size=1\n                if output.shape[1] == 1:\n                    # 形状为 (sequence_length, 1, num_classes)\n                    predicted_indices = np.argmax(output[:, 0, :], axis=1)\n                elif output.shape[0] == 1:\n                    # 形状为 (1, sequence_length, num_classes)\n                    predicted_indices = np.argmax(output[0, :, :], axis=1)\n                else:\n                    # 默认取第一个batch\n                    predicted_indices = np.argmax(output[0, :, :], axis=1)\n            else:\n                # 单字符输出或2D序列输出\n                predicted_indices = np.argmax(output, axis=-1)\n                # 确保结果是数组形式，即使是单个值\n                if predicted_indices.ndim == 0:\n                    predicted_indices = np.array([predicted_indices])\n            \n            # 正确的CTC解码：在索引级别进行去重\n            charset = self.charset_manager.get_charset()\n            valid_indices = self.charset_manager.get_valid_indices()\n\n            # 步骤1：CTC解码 - 在索引级别去除连续重复\n            decoded_indices = self._ctc_decode_indices(predicted_indices)\n\n            # 步骤2：转换为字符并应用字符集范围限制\n            result_chars = []\n            for idx in decoded_indices:\n                # 检查字符集范围限制\n                if valid_indices and idx not in valid_indices:\n                    continue\n\n                # 检查索引有效性并转换为字符\n                if 0 <= idx < len(charset):\n                    char = charset[idx]\n                    # 注意：这里不跳过空字符，因为CTC解码已经处理了blank\n                    result_chars.append(char)\n\n            return ''.join(result_chars)\n            \n        except Exception as e:\n            raise ModelLoadError(f\"文本输出处理失败: {str(e)}\") from e\n\n    def _ctc_decode_indices(self, predicted_indices: np.ndarray) -> List[int]:\n        \"\"\"\n        CTC解码：在索引级别去除连续重复和blank字符\n\n        Args:\n            predicted_indices: 预测的索引数组\n\n        Returns:\n            解码后的索引列表\n        \"\"\"\n        if len(predicted_indices) == 0:\n            return []\n\n        decoded_indices = []\n        prev_idx = None\n\n        for idx in predicted_indices:\n            # 转换为Python int类型以确保一致性\n            idx = int(idx)\n\n            # CTC解码规则：\n            # 1. 跳过连续重复的索引\n            # 2. 跳过blank字符（索引0，对应空字符）\n            if idx != prev_idx:  # 不是连续重复\n                if idx != 0:  # 不是blank字符（假设索引0是blank）\n                    decoded_indices.append(idx)\n\n            prev_idx = idx\n\n        return decoded_indices\n\n    def _process_probability_output(self, output: np.ndarray) -> Dict[str, Any]:\n        \"\"\"\n        处理概率输出\n        \n        Args:\n            output: 模型输出\n            \n        Returns:\n            包含概率信息的字典\n        \"\"\"\n        try:\n            # 应用softmax\n            if len(output.shape) == 3:\n                probabilities = self._softmax(output, axis=2)\n            else:\n                probabilities = self._softmax(output, axis=1)\n            \n            # 获取文本结果\n            text_result = self._process_text_output(output)\n            \n            # 构建概率信息\n            charset = self.charset_manager.get_charset()\n            prob_info = {\n                'text': text_result,\n                'probabilities': probabilities.tolist(),\n                'charset': charset,\n                'confidence': float(np.mean(np.max(probabilities, axis=-1)))\n            }\n            \n            return prob_info\n            \n        except Exception as e:\n            raise ModelLoadError(f\"概率输出处理失败: {str(e)}\") from e\n    \n    def _softmax(self, x: np.ndarray, axis: int = -1) -> np.ndarray:\n        \"\"\"\n        计算softmax\n        \n        Args:\n            x: 输入数组\n            axis: 计算轴\n            \n        Returns:\n            softmax结果\n        \"\"\"\n        exp_x = np.exp(x - np.max(x, axis=axis, keepdims=True))\n        return exp_x / np.sum(exp_x, axis=axis, keepdims=True)\n    \n    def set_charset_range(self, charset_range: Union[int, str, List[str]]) -> None:\n        \"\"\"\n        设置字符集范围\n        \n        Args:\n            charset_range: 字符集范围参数\n        \"\"\"\n        self.charset_manager.set_ranges(charset_range)\n    \n    def get_charset(self) -> List[str]:\n        \"\"\"\n        获取字符集\n        \n        Returns:\n            字符集列表\n        \"\"\"\n        return self.charset_manager.get_charset()\n    \n    def _reload_model(self) -> None:\n        \"\"\"重新加载模型\"\"\"\n        self.initialize()\n"
  },
  {
    "path": "ddddocr/core/slide_engine.py",
    "content": "# coding=utf-8\n\"\"\"\n滑块匹配引擎\n提供滑块验证码的匹配和比较功能\n\"\"\"\n\nfrom typing import Union, Dict, Any, Tuple\nimport numpy as np\nfrom PIL import Image\n\nfrom .base import BaseEngine\nfrom ..utils.image_io import load_image_from_input, image_to_numpy\nfrom ..utils.exceptions import ImageProcessError, safe_import_opencv\nfrom ..utils.validators import validate_image_input\n\n# 安全导入OpenCV\ncv2 = safe_import_opencv()\n\n\nclass SlideEngine(BaseEngine):\n    \"\"\"滑块匹配引擎\"\"\"\n    \n    def __init__(self):\n        \"\"\"\n        初始化滑块引擎\n        注意：滑块引擎不需要GPU和模型加载\n        \"\"\"\n        # 不调用父类的__init__，因为不需要模型加载器\n        self.is_initialized = True\n    \n    def initialize(self, **kwargs) -> None:\n        \"\"\"\n        初始化滑块引擎\n        滑块引擎不需要特殊初始化\n        \"\"\"\n        self.is_initialized = True\n    \n    def predict(self, *args, **kwargs) -> Any:\n        \"\"\"\n        预测方法的通用接口\n        具体功能通过slide_match和slide_comparison方法实现\n        \"\"\"\n        raise NotImplementedError(\"请使用slide_match或slide_comparison方法\")\n    \n    def slide_match(self, target_image: Union[bytes, str, Image.Image], \n                   background_image: Union[bytes, str, Image.Image],\n                   simple_target: bool = False) -> Dict[str, Any]:\n        \"\"\"\n        滑块匹配算法\n        \n        Args:\n            target_image: 滑块图片\n            background_image: 背景图片\n            simple_target: 是否为简单滑块\n            \n        Returns:\n            匹配结果字典，包含target坐标\n            \n        Raises:\n            ImageProcessError: 当图像处理失败时\n        \"\"\"\n        # 验证输入\n        validate_image_input(target_image)\n        validate_image_input(background_image)\n        \n        try:\n            # 加载图像\n            target_pil = load_image_from_input(target_image)\n            background_pil = load_image_from_input(background_image)\n            \n            # 转换为numpy数组\n            target_array = image_to_numpy(target_pil, 'RGB')\n            background_array = image_to_numpy(background_pil, 'RGB')\n            \n            # 执行匹配\n            result = self._perform_slide_match(target_array, background_array, simple_target)\n            \n            return result\n            \n        except Exception as e:\n            raise ImageProcessError(f\"滑块匹配失败: {str(e)}\") from e\n    \n    def slide_comparison(self, target_image: Union[bytes, str, Image.Image],\n                        background_image: Union[bytes, str, Image.Image]) -> Dict[str, Any]:\n        \"\"\"\n        滑块比较算法（用于带坑位的图片）\n        \n        Args:\n            target_image: 带坑位的图片\n            background_image: 完整背景图片\n            \n        Returns:\n            比较结果字典，包含target坐标\n            \n        Raises:\n            ImageProcessError: 当图像处理失败时\n        \"\"\"\n        # 验证输入\n        validate_image_input(target_image)\n        validate_image_input(background_image)\n        \n        try:\n            # 加载图像\n            target_pil = load_image_from_input(target_image)\n            background_pil = load_image_from_input(background_image)\n            \n            # 转换为numpy数组\n            target_array = image_to_numpy(target_pil, 'RGB')\n            background_array = image_to_numpy(background_pil, 'RGB')\n            \n            # 执行比较\n            result = self._perform_slide_comparison(target_array, background_array)\n            \n            return result\n            \n        except Exception as e:\n            raise ImageProcessError(f\"滑块比较失败: {str(e)}\") from e\n    \n    def _perform_slide_match(self, target: np.ndarray, background: np.ndarray, \n                           simple_target: bool) -> Dict[str, Any]:\n        \"\"\"\n        执行滑块匹配\n        \n        Args:\n            target: 滑块图像数组\n            background: 背景图像数组\n            simple_target: 是否为简单滑块\n            \n        Returns:\n            匹配结果\n        \"\"\"\n        try:\n            # 转换为灰度图\n            target_gray = cv2.cvtColor(target, cv2.COLOR_RGB2GRAY)\n            background_gray = cv2.cvtColor(background, cv2.COLOR_RGB2GRAY)\n            \n            if simple_target:\n                # 简单滑块匹配\n                result = self._simple_template_match(target_gray, background_gray)\n            else:\n                # 复杂滑块匹配（边缘检测）\n                result = self._edge_based_match(target_gray, background_gray)\n            \n            return result\n            \n        except Exception as e:\n            raise ImageProcessError(f\"滑块匹配执行失败: {str(e)}\") from e\n    \n    def _perform_slide_comparison(self, target: np.ndarray, background: np.ndarray) -> Dict[str, Any]:\n        \"\"\"\n        执行滑块比较\n        \n        Args:\n            target: 带坑位的图像数组\n            background: 完整背景图像数组\n            \n        Returns:\n            比较结果\n        \"\"\"\n        try:\n            # 计算图像差异\n            diff = cv2.absdiff(target, background)\n            \n            # 转换为灰度图\n            diff_gray = cv2.cvtColor(diff, cv2.COLOR_RGB2GRAY)\n            \n            # 二值化\n            _, binary = cv2.threshold(diff_gray, 30, 255, cv2.THRESH_BINARY)\n            \n            # 形态学操作去噪\n            kernel = np.ones((3, 3), np.uint8)\n            binary = cv2.morphologyEx(binary, cv2.MORPH_CLOSE, kernel)\n            binary = cv2.morphologyEx(binary, cv2.MORPH_OPEN, kernel)\n            \n            # 查找轮廓\n            contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)\n            \n            if not contours:\n                return {'target': [0, 0]}\n            \n            # 找到最大的轮廓（假设是缺口）\n            largest_contour = max(contours, key=cv2.contourArea)\n            \n            # 获取边界框\n            x, y, w, h = cv2.boundingRect(largest_contour)\n            \n            # 计算中心点\n            center_x = x + w // 2\n            center_y = y + h // 2\n            \n            return {\n                'target': [center_x, center_y],\n                'target_x': center_x,\n                'target_y': center_y\n            }\n            \n        except Exception as e:\n            raise ImageProcessError(f\"滑块比较执行失败: {str(e)}\") from e\n    \n    def _simple_template_match(self, target: np.ndarray, background: np.ndarray) -> Dict[str, Any]:\n        \"\"\"\n        简单模板匹配\n        \n        Args:\n            target: 滑块模板\n            background: 背景图像\n            \n        Returns:\n            匹配结果\n        \"\"\"\n        try:\n            # 模板匹配\n            result = cv2.matchTemplate(background, target, cv2.TM_CCOEFF_NORMED)\n            \n            # 找到最佳匹配位置\n            _, max_val, _, max_loc = cv2.minMaxLoc(result)\n            \n            # 计算滑块中心位置\n            if len(target.shape) == 3:\n                target_h, target_w, _ = target.shape\n            else:\n                target_h, target_w = target.shape\n            center_x = max_loc[0] + target_w // 2\n            center_y = max_loc[1] + target_h // 2\n            \n            return {\n                'target': [center_x, center_y],\n                'target_x': center_x,\n                'target_y': center_y,\n                'confidence': float(max_val)\n            }\n            \n        except Exception as e:\n            raise ImageProcessError(f\"简单模板匹配失败: {str(e)}\") from e\n    \n    def _edge_based_match(self, target: np.ndarray, background: np.ndarray) -> Dict[str, Any]:\n        \"\"\"\n        基于边缘检测的滑块匹配\n        \n        Args:\n            target: 滑块图像\n            background: 背景图像\n            \n        Returns:\n            匹配结果\n        \"\"\"\n        try:\n            # 边缘检测\n            target_edges = cv2.Canny(target, 50, 150)\n            background_edges = cv2.Canny(background, 50, 150)\n            \n            # 模板匹配\n            result = cv2.matchTemplate(background_edges, target_edges, cv2.TM_CCOEFF_NORMED)\n            \n            # 找到最佳匹配位置\n            _, max_val, _, max_loc = cv2.minMaxLoc(result)\n            \n            # 计算滑块中心位置\n            if len(target.shape) == 3:\n                target_h, target_w, _ = target.shape\n            else:\n                target_h, target_w = target.shape\n            center_x = max_loc[0] + target_w // 2\n            center_y = max_loc[1] + target_h // 2\n            \n            return {\n                'target': [center_x, center_y],\n                'target_x': center_x,\n                'target_y': center_y,\n                'confidence': float(max_val)\n            }\n            \n        except Exception as e:\n            raise ImageProcessError(f\"边缘匹配失败: {str(e)}\") from e\n    \n    def is_ready(self) -> bool:\n        \"\"\"\n        检查引擎是否就绪\n        滑块引擎总是就绪的\n        \n        Returns:\n            总是返回True\n        \"\"\"\n        return True\n    \n    def cleanup(self) -> None:\n        \"\"\"清理资源（滑块引擎无需清理）\"\"\"\n        pass\n    \n    def __repr__(self) -> str:\n        return \"SlideEngine(ready=True)\"\n"
  },
  {
    "path": "ddddocr/models/__init__.py",
    "content": "# coding=utf-8\n\"\"\"\n模型管理模块\n提供ONNX模型加载、字符集管理等功能\n\"\"\"\n\nfrom .model_loader import ModelLoader\nfrom .charset_manager import CharsetManager\n\n__all__ = [\n    'ModelLoader',\n    'CharsetManager'\n]\n"
  },
  {
    "path": "ddddocr/models/charset_manager.py",
    "content": "# coding=utf-8\n\"\"\"\n字符集管理模块\n负责字符集的加载、管理和范围限制\n\"\"\"\n\nfrom typing import List, Union, Optional, Set\nimport json\nimport os\n\nfrom ..utils.exceptions import ModelLoadError\nfrom ..utils.validators import validate_charset_range\n\n\nclass CharsetManager:\n    \"\"\"字符集管理器\"\"\"\n    \n    def __init__(self, charset: Optional[List[str]] = None):\n        \"\"\"\n        初始化字符集管理器\n        \n        Args:\n            charset: 字符集列表\n        \"\"\"\n        self.charset = charset or []\n        self.charset_range = []\n        self.valid_charset_range_index = []\n    \n    def load_default_charset(self, old: bool = False, beta: bool = False) -> None:\n        \"\"\"\n        加载默认字符集\n\n        Args:\n            old: 是否使用旧版字符集\n            beta: 是否使用beta版字符集\n        \"\"\"\n        if old:\n            self.charset = self._get_old_charset()\n        elif beta:\n            self.charset = self._get_beta_charset()\n        else:\n            self.charset = self._get_old_charset()  # 默认使用旧版\n\n        # 加载字符集后，初始化有效索引（使用完整字符集）\n        self._update_valid_indices()\n    \n    def load_custom_charset(self, charset_path: str) -> dict:\n        \"\"\"\n        从文件加载自定义字符集\n        \n        Args:\n            charset_path: 字符集文件路径\n            \n        Returns:\n            字符集信息字典\n            \n        Raises:\n            ModelLoadError: 当加载失败时\n        \"\"\"\n        try:\n            if not os.path.exists(charset_path):\n                raise ModelLoadError(f\"字符集文件不存在: {charset_path}\")\n            \n            with open(charset_path, 'r', encoding=\"utf-8\") as f:\n                charset_info = json.loads(f.read())\n            \n            # 验证字符集信息格式\n            required_keys = ['charset', 'word', 'image', 'channel']\n            for key in required_keys:\n                if key not in charset_info:\n                    raise ModelLoadError(f\"字符集文件缺少必需字段: {key}\")\n            \n            self.charset = charset_info['charset']\n\n            # 加载字符集后，初始化有效索引（使用完整字符集）\n            self._update_valid_indices()\n\n            return charset_info\n            \n        except Exception as e:\n            raise ModelLoadError(f\"字符集加载失败: {str(e)}\") from e\n    \n    def set_ranges(self, charset_range: Union[int, str, List[str]]) -> None:\n        \"\"\"\n        设置字符集范围限制\n        \n        Args:\n            charset_range: 字符集范围参数\n        \"\"\"\n        validate_charset_range(charset_range)\n        \n        self.charset_range.clear()\n        \n        if isinstance(charset_range, int):\n            # 按索引范围限制\n            if 0 <= charset_range < len(self.charset):\n                self.charset_range = self.charset[:charset_range + 1]\n        elif isinstance(charset_range, str):\n            # 按字符串限制\n            for char in charset_range:\n                if char not in self.charset_range:\n                    self.charset_range.append(char)\n        elif isinstance(charset_range, list):\n            # 按字符列表限制\n            self.charset_range = charset_range.copy()\n        \n        # 去重并添加空字符\n        self.charset_range = list(set(self.charset_range)) + [\"\"]\n        \n        # 计算有效索引\n        self._update_valid_indices()\n    \n    def _update_valid_indices(self) -> None:\n        \"\"\"更新有效字符索引\"\"\"\n        self.valid_charset_range_index.clear()\n\n        if len(self.charset_range) > 0:\n            for item in self.charset_range:\n                if item in self.charset:\n                    self.valid_charset_range_index.append(self.charset.index(item))\n                # 未知字符没有索引，直接忽略\n        else:\n            # 当没有设置字符集范围时，使用完整字符集的所有索引\n            self.valid_charset_range_index = list(range(len(self.charset)))\n    \n    def get_valid_indices(self) -> List[int]:\n        \"\"\"\n        获取有效字符索引列表\n        \n        Returns:\n            有效字符索引列表\n        \"\"\"\n        return self.valid_charset_range_index.copy()\n    \n    def get_charset(self) -> List[str]:\n        \"\"\"\n        获取完整字符集\n        \n        Returns:\n            字符集列表\n        \"\"\"\n        return self.charset.copy()\n    \n    def get_charset_range(self) -> List[str]:\n        \"\"\"\n        获取字符集范围\n        \n        Returns:\n            字符集范围列表\n        \"\"\"\n        return self.charset_range.copy()\n    \n    def char_to_index(self, char: str) -> int:\n        \"\"\"\n        将字符转换为索引\n        \n        Args:\n            char: 字符\n            \n        Returns:\n            字符索引，如果不存在返回-1\n        \"\"\"\n        try:\n            return self.charset.index(char)\n        except ValueError:\n            return -1\n    \n    def index_to_char(self, index: int) -> str:\n        \"\"\"\n        将索引转换为字符\n        \n        Args:\n            index: 字符索引\n            \n        Returns:\n            字符，如果索引无效返回空字符串\n        \"\"\"\n        if 0 <= index < len(self.charset):\n            return self.charset[index]\n        return \"\"\n    \n    def is_valid_char(self, char: str) -> bool:\n        \"\"\"\n        检查字符是否在字符集中\n        \n        Args:\n            char: 字符\n            \n        Returns:\n            是否有效\n        \"\"\"\n        return char in self.charset\n    \n    def filter_text(self, text: str) -> str:\n        \"\"\"\n        过滤文本，只保留字符集中的字符\n        \n        Args:\n            text: 输入文本\n            \n        Returns:\n            过滤后的文本\n        \"\"\"\n        if not self.charset_range:\n            return text\n        \n        filtered_chars = []\n        for char in text:\n            if char in self.charset_range:\n                filtered_chars.append(char)\n        \n        return ''.join(filtered_chars)\n    \n    def get_charset_size(self) -> int:\n        \"\"\"\n        获取字符集大小\n        \n        Returns:\n            字符集大小\n        \"\"\"\n        return len(self.charset)\n    \n    def get_range_size(self) -> int:\n        \"\"\"\n        获取字符集范围大小\n        \n        Returns:\n            字符集范围大小\n        \"\"\"\n        return len(self.charset_range)\n    \n    def clear_ranges(self) -> None:\n        \"\"\"清空字符集范围限制\"\"\"\n        self.charset_range.clear()\n        self.valid_charset_range_index.clear()\n    \n    def _get_old_charset(self) -> List[str]:\n        \"\"\"获取旧版字符集\"\"\"\n        return [\"\", \"掀\", \"袜\", \"顧\", \"徕\", \"榱\", \"荪\", \"浡\", \"其\", \"炎\", \"玉\", \"恩\", \"劣\", \"徽\",\n                                  \"廉\", \"桂\", \"拂\",\n                                  \"鳊\", \"撤\",\n                                  \"赏\", \"哮\", \"侄\", \"蓮\", \"И\", \"进\", \"饭\", \"饱\", \"优\", \"楸\", \"礻\", \"蜉\", \"營\", \"伙\",\n                                  \"杌\", \"修\", \"榜\",\n                                  \"准\", \"铒\",\n                                  \"戏\", \"赭\", \"襟\", \"彘\", \"彩\", \"雁\", \"闽\", \"坎\", \"聂\", \"氡\", \"辜\", \"苁\", \"潆\", \"摁\",\n                                  \"月\", \"稇\", \"而\",\n                                  \"醴\", \"簉\",\n                                  \"卑\", \"妖\", \"埽\", \"嘡\", \"醛\", \"見\", \"煎\", \"汪\", \"秽\", \"迄\", \"噭\", \"焉\", \"钌\", \"瑕\",\n                                  \"玻\", \"仙\", \"蹑\",\n                                  \"钀\", \"翦\",\n                                  \"丰\", \"矗\", \"2\", \"胚\", \"镊\", \"镡\", \"鍊\", \"帖\", \"僰\", \"淀\", \"吒\", \"冲\", \"挡\", \"粼\",\n                                  \"螈\", \"缵\", \"孺\",\n                                  \"侦\", \"曷\",\n                                  \"渐\", \"敷\", \"投\", \"宸\", \"祉\", \"柳\", \"尖\", \"梃\", \"淘\", \"臁\", \"躇\", \"撖\", \"惭\", \"狄\",\n                                  \"聢\", \"官\", \"狴\",\n                                  \"诬\", \"骄\",\n                                  \"跻\", \"場\", \"姻\", \"钎\", \"藥\", \"綉\", \"驾\", \"舻\", \"黢\", \"鲦\", \"蜣\", \"渖\", \"绹\", \"佰\",\n                                  \"怜\", \"三\", \"痪\",\n                                  \"眍\", \"养\",\n                                  \"角\", \"薜\", \"濑\", \"劳\", \"戟\", \"傎\", \"纫\", \"徉\", \"收\", \"稍\", \"虫\", \"螋\", \"鬲\", \"捌\",\n                                  \"陡\", \"蓟\", \"邳\",\n                                  \"蹢\", \"涉\",\n                                  \"煋\", \"端\", \"懷\", \"椤\", \"埶\", \"廊\", \"免\", \"秫\", \"猢\", \"睐\", \"臺\", \"擀\", \"布\", \"麃\",\n                                  \"彗\", \"汊\", \"芄\",\n                                  \"遣\", \"胙\",\n                                  \"另\", \"癯\", \"徭\", \"疢\", \"茆\", \"忡\", \"＇\", \"烃\", \"笕\", \"薤\", \"肆\", \"熛\", \"過\", \"盖\",\n                                  \"跷\", \"呷\", \"痿\",\n                                  \"沖\", \"魍\",\n                                  \"讣\", \"庤\", \"弑\", \"诩\", \"庵\", \"履\", \"暮\", \"始\", \"滟\", \"矅\", \"蛹\", \"鸿\", \"啃\", \"铋\",\n                                  \"沿\", \"鐾\", \"酆\",\n                                  \"團\", \"恙\",\n                                  \"閥\", \"聒\", \"讵\", \"颠\", \"沾\", \"堅\", \"踣\", \"陴\", \"覃\", \"滙\", \"浐\", \"钇\", \"脆\", \"炙\",\n                                  \"亮\", \"觌\", \"産\",\n                                  \"汩\", \"鸭\",\n                                  \"斄\", \"堆\", \"掭\", \"揞\", \"鹂\", \"郫\", \"瘅\", \"蚂\", \"揩\", \"学\", \"组\", \"浸\", \"腙\", \"耀\",\n                                  \"嗛\", \"局\", \"蠓\",\n                                  \"肠\", \"昏\",\n                                  \"Ｉ\", \"岑\", \"镯\", \"憧\", \"油\", \"泸\", \"鸟\", \"潇\", \"蕻\", \"褒\", \"瞧\", \"旸\", \"昭\", \"庐\",\n                                  \"鞒\", \"内\", \"痈\",\n                                  \"己\", \"曙\",\n                                  \"怠\", \"锟\", \"晞\", \"耢\", \"鲢\", \"醦\", \"糕\", \"療\", \"寇\", \"梵\", \"黾\", \"呻\", \"苒\", \"ü\",\n                                  \"校\", \"嘏\", \"昃\",\n                                  \"Ⅰ\", \"蕰\",\n                                  \"凖\", \"嵛\", \"裨\", \"筏\", \"匜\", \"咋\", \"乏\", \"婵\", \"镂\", \"珰\", \"感\", \"蔗\", \"蚵\", \"庞\",\n                                  \"弢\", \"槟\", \"口\",\n                                  \"漉\", \"﹒\",\n                                  \"咂\", \"俩\", \"增\", \"硐\", \"襙\", \"绉\", \"卿\", \"距\", \"璱\", \"猖\", \"铚\", \"郚\", \"嬖\", \"缒\",\n                                  \"阃\", \"扞\", \"Ｖ\",\n                                  \"望\", \"最\",\n                                  \"浔\", \"骜\", \"赃\", \"闻\", \"砍\", \"奸\", \"灶\", \"以\", \"获\", \"鳎\", \"浦\", \"罐\", \"孓\", \"纭\",\n                                  \"瘀\", \"普\", \"氰\",\n                                  \"塮\", \"症\",\n                                  \"顷\", \"们\", \"螓\", \"蛸\", \"鵰\", \"册\", \"美\", \"萨\", \"沘\", \"犰\", \"嫌\", \"名\", \"）\", \"懦\",\n                                  \"滇\", \"F\", \"垡\",\n                                  \"声\", \"毅\",\n                                  \"隅\", \"鲎\", \"煨\", \"萦\", \"宜\", \"唇\", \"鯨\", \"邛\", \"杲\", \"赜\", \"长\", \"魂\", \"桠\", \"锇\",\n                                  \"搓\", \"俘\", \"仰\",\n                                  \"膘\", \"宦\",\n                                  \"歹\", \"遁\", \"猃\", \"噉\", \"幂\", \"糜\", \"嗤\", \"周\", \"剂\", \"曦\", \"暧\", \"焖\", \"髻\", \"釐\",\n                                  \"泰\", \"窟\", \"檎\",\n                                  \"旧\", \"犀\",\n                                  \"镄\", \"百\", \"取\", \"岍\", \"逗\", \"叽\", \"呃\", \"鲪\", \"萬\", \"陈\", \"7\", \"習\", \"区\", \"逄\",\n                                  \"宏\", \"罡\", \"漭\",\n                                  \"盗\", \"郿\",\n                                  \"般\", \"谢\", \"倪\", \"纵\", \"婶\", \"砧\", \"揖\", \"扪\", \"濒\", \"愤\", \"茓\", \"浞\", \"子\", \"揄\",\n                                  \"旌\", \"趄\", \"樊\",\n                                  \"醑\", \"遄\",\n                                  \"婚\", \"汶\", \"矩\", \"裈\", \"弊\", \"呱\", \"铳\", \"勿\", \"蚴\", \"忿\", \"褓\", \"缚\", \"酱\", \"璞\",\n                                  \"庆\", \"除\", \"礌\",\n                                  \"珩\", \"榨\",\n                                  \"鼢\", \"逞\", \"容\", \"圯\", \"猛\", \"陌\", \"-\", \"嚯\", \"镘\", \"鱾\", \"睚\", \"猬\", \"杜\", \"鳓\",\n                                  \"燈\", \"計\", \"咣\",\n                                  \"炜\", \"睁\",\n                                  \"箱\", \"邮\", \"略\", \"馇\", \"逐\", \"雀\", \"僬\", \"髯\", \"奖\", \"俱\", \"－\", \"绗\", \"犏\", \"辱\",\n                                  \"忑\", \"挽\", \"康\",\n                                  \"蝼\", \"栏\",\n                                  \"模\", \"辒\", \"•\", \"儋\", \"罱\", \"墈\", \"会\", \"秀\", \"栈\", \"缔\", \"醜\", \"蚣\", \"阮\", \"鼗\",\n                                  \"眼\", \"湧\", \"沁\",\n                                  \"夥\", \"毕\",\n                                  \"媚\", \"瘳\", \"痣\", \"搴\", \"闿\", \"遍\", \"焰\", \"岣\", \"舱\", \"埌\", \"麿\", \"嘿\", \"靽\", \"体\",\n                                  \"想\", \"霓\", \"钛\",\n                                  \"摽\", \"苑\",\n                                  \"芳\", \"技\", \"綮\", \"钅\", \"燠\", \"栾\", \"年\", \"悱\", \"腹\", \"员\", \"呕\", \"闇\", \"嗫\", \"檩\",\n                                  \"荒\", \"溱\", \"舨\",\n                                  \"峙\", \"卒\",\n                                  \"洑\", \"预\", \"弯\", \"蔷\", \"叵\", \"锯\", \"慈\", \"牧\", \"患\", \"贇\", \"偷\", \"鲜\", \"锓\", \"躔\",\n                                  \"嚬\", \"烈\", \"娌\",\n                                  \"嘲\", \"详\",\n                                  \"麺\", \"舒\", \"厨\", \"徵\", \"葹\", \"只\", \"篦\", \"鹀\", \"剕\", \"驳\", \"聍\", \"黧\", \"砾\", \"暅\",\n                                  \"褫\", \"呈\", \"森\",\n                                  \"结\", \"龛\",\n                                  \"钲\", \"轧\", \"扔\", \"蕹\", \"赵\", \"涒\", \"冯\", \"渲\", \"缭\", \"坚\", \"趼\", \"鲑\", \"倫\", \"门\",\n                                  \"班\", \"垚\", \"鞍\",\n                                  \"菘\", \"畐\",\n                                  \"僇\", \"侉\", \"禢\", \"轳\", \"饦\", \"兽\", \"呯\", \"捂\", \"樨\", \"卧\", \"栝\", \"豭\", \"冶\", \"鉰\",\n                                  \"申\", \"蜈\", \"印\",\n                                  \"缨\", \"镫\",\n                                  \"蕾\", \"圜\", \"扑\", \"娉\", \"烦\", \"缳\", \"广\", \"峄\", \"獒\", \"铔\", \"奁\", \"醚\", \"倥\", \"蹇\",\n                                  \"阚\", \"镆\", \"煺\",\n                                  \"德\", \"颉\",\n                                  \"嗅\", \"绷\", \"蒯\", \"祺\", \"崧\", \"往\", \"枨\", \"涡\", \"鲲\", \"瓅\", \"岌\", \"肘\", \"飔\", \"缘\",\n                                  \"千\", \"棱\", \"溶\",\n                                  \"窣\", \"篼\",\n                                  \"代\", \"捡\", \"送\", \"咡\", \"术\", \"滑\", \"茜\", \"晾\", \"挤\", \"曳\", \"糈\", \"Ｇ\", \"翊\", \"殴\",\n                                  \"妹\", \"溥\", \"璆\",\n                                  \"烩\", \"拙\",\n                                  \"襄\", \"几\", \"嘴\", \"D\", \"驮\", \"淙\", \"蹐\", \"合\", \"環\", \"剑\", \"怪\", \"褂\", \"畑\", \"燏\",\n                                  \"订\", \"珪\", \"≥\",\n                                  \"瘟\", \"耷\",\n                                  \"槑\", \"衷\", \"猕\", \"迁\", \"霎\", \"槜\", \"﹖\", \"鋈\", \"苹\", \"嫣\", \"祜\", \"李\", \"鄒\", \"噢\",\n                                  \"萄\", \"仝\", \"纨\",\n                                  \"直\", \"悛\",\n                                  \"拣\", \"远\", \"诏\", \"圧\", \"躬\", \"蝟\", \"總\", \"眆\", \"筻\", \"硇\", \"鳁\", \"眠\", \"钆\", \"泞\",\n                                  \"猱\", \"宾\", \"酞\",\n                                  \"募\", \"螳\",\n                                  \"腴\", \"念\", \"宠\", \"唯\", \"怊\", \"勃\", \"M\", \"兿\", \"蟑\", \"妁\", \"掸\", \"拌\", \"铸\", \"讼\",\n                                  \"诟\", \"锺\", \"Ω\",\n                                  \"竟\", \"羚\",\n                                  \"剽\", \"C\", \"苦\", \"煳\", \"罢\", \"跨\", \"～\", \"豸\", \"±\", \"俬\", \"捺\", \"彦\", \"钣\", \"鋆\", \"用\",\n                                  \"缤\", \"搁\",\n                                  \"徼\", \"谦\",\n                                  \"筘\", \"嗨\", \"扮\", \"旇\", \"折\", \"咯\", \"昆\", \"叟\", \"垂\", \"箐\", \"捻\", \"燕\", \"島\", \"瞀\",\n                                  \"鮮\", \"屡\", \"點\",\n                                  \"瘭\", \"恚\",\n                                  \"旚\", \"丟\", \"捽\", \"菁\", \"瀑\", \"炕\", \"蹩\", \"芒\", \"r\", \"是\", \"媾\", \"鹝\", \"囵\", \"萤\",\n                                  \"拷\", \"频\", \"埴\",\n                                  \"课\", \"癍\",\n                                  \"袱\", \"螯\", \"谘\", \"榛\", \"Y\", \"缣\", \"裔\", \"憩\", \"相\", \"觀\", \"晗\", \"坳\", \"炔\", \"勉\",\n                                  \"汆\", \"钡\", \"舐\",\n                                  \"衫\", \"疫\",\n                                  \"鲙\", \"蘩\", \"穈\", \"殁\", \"九\", \"泻\", \"咤\", \"構\", \"谆\", \"陕\", \"装\", \"蔡\", \"画\", \"介\",\n                                  \"苋\", \"務\", \"敝\",\n                                  \"俟\", \"帇\",\n                                  \"鸺\", \"贸\", \"茗\", \"肃\", \"滪\", \"输\", \"瘗\", \"菽\", \"饹\", \"诉\", \"遐\", \"浑\", \"扎\", \"卟\",\n                                  \"铀\", \"邗\", \"觋\",\n                                  \"嘎\", \"塑\",\n                                  \"潏\", \"金\", \"姘\", \"潋\", \"逵\", \"鲻\", \"逯\", \"炮\", \"甄\", \"髡\", \"剩\", \"嗬\", \"芴\", \"屋\",\n                                  \"改\", \"骣\", \"芪\",\n                                  \"邠\", \"痋\",\n                                  \"珑\", \"帆\", \"狙\", \"八\", \"奔\", \"族\", \"轵\", \"氖\", \"雕\", \"痧\", \"眊\", \"胛\", \"酉\", \"鲼\",\n                                  \"砣\", \"猸\", \"餮\",\n                                  \"郇\", \"沫\",\n                                  \"跖\", \"蝉\", \"屑\", \"辘\", \"閣\", \"涑\", \"邡\", \"篃\", \"交\", \"笼\", \"颇\", \"贻\", \"魄\", \"黡\",\n                                  \"劂\", \"糠\", \"炅\",\n                                  \"帨\", \"苍\",\n                                  \"瓴\", \"粤\", \"莎\", \"朿\", \"埔\", \"绸\", \"齁\", \"鱿\", \"惨\", \"腢\", \"郡\", \"棠\", \"猫\", \"脑\",\n                                  \"風\", \"蚱\", \"捐\",\n                                  \"嵌\", \"胱\",\n                                  \"馗\", \"竽\", \"泥\", \"辍\", \"怖\", \"雾\", \"絮\", \"淼\", \"筝\", \"碲\", \"悼\", \"龀\", \"の\", \"珥\",\n                                  \"忐\", \"溲\", \"昕\",\n                                  \"荔\", \"掂\",\n                                  \"瘦\", \"僭\", \"蔌\", \"抺\", \"椅\", \"誉\", \"扯\", \"僜\", \"停\", \"衉\", \"汇\", \"赔\", \"眄\", \"呙\",\n                                  \"咙\", \"剿\", \"次\",\n                                  \"蛟\", \"嗓\",\n                                  \"』\", \"汕\", \"詈\", \"帘\", \"踧\", \"姁\", \"血\", \"堪\", \"喜\", \"滩\", \"璎\", \"胄\", \"俨\", \"眚\",\n                                  \"凌\", \"拽\", \"滔\",\n                                  \"⑿\", \"嬃\",\n                                  \"―\", \"汐\", \"潭\", \"阡\", \"呓\", \"婷\", \"执\", \"妊\", \"恂\", \"妥\", \"鳘\", \"蔫\", \"设\", \"睒\",\n                                  \"笪\", \"謇\", \"鞋\",\n                                  \"谍\", \"黯\",\n                                  \"虍\", \"馬\", \"蚧\", \"骑\", \"峤\", \"舾\", \"儀\", \"駡\", \"β\", \"蓑\", \"柏\", \"痒\", \"蒇\", \"痕\",\n                                  \"妍\", \"熠\", \"僻\",\n                                  \"爬\", \"迭\",\n                                  \"畫\", \"绰\", \"湯\", \"凭\", \"菼\", \"懈\", \"顒\", \"午\", \"箪\", \"糙\", \"址\", \"钼\", \"堵\", \"佘\",\n                                  \"侍\", \"卤\", \"(\",\n                                  \"榚\", \"泽\",\n                                  \"溘\", \"蟹\", \"b\", \"燁\", \"颂\", \"菠\", \"榉\", \"鲡\", \"埸\", \"荛\", \"歘\", \"断\", \"邸\", \"贡\",\n                                  \"礞\", \"蔼\", \"脸\",\n                                  \"爪\", \"帜\",\n                                  \"翡\", \"仟\", \"皎\", \"辆\", \"滫\", \"昔\", \"™\", \"柬\", \"弓\", \"遇\", \"杪\", \"侨\", \"娓\", \"镪\",\n                                  \"觑\", \"一\", \"踌\",\n                                  \"牟\", \"褡\",\n                                  \"厩\", \"晌\", \"每\", \"娘\", \"渤\", \"c\", \"咫\", \"成\", \"颏\", \"孩\", \"鼓\", \"瞌\", \"槁\", \"捒\",\n                                  \"阉\", \"伉\", \"癣\",\n                                  \"胞\", \"鲟\",\n                                  \"瓤\", \"杅\", \"紡\", \"喂\", \"掠\", \"镜\", \"镧\", \"侞\", \"赦\", \"貝\", \"丕\", \"臧\", \"Ｌ\", \"池\",\n                                  \"彷\", \"棓\", \"锽\",\n                                  \"渊\", \"食\",\n                                  \"饨\", \"堡\", \"玥\", \"氣\", \"讽\", \"敬\", \"闺\", \"帡\", \"携\", \"哫\", \"珈\", \"魆\", \"哄\", \"旁\",\n                                  \"喻\", \"泄\", \"畎\",\n                                  \"郁\", \"唅\",\n                                  \"葜\", \"繪\", \"飐\", \"谶\", \"聆\", \"斝\", \"谥\", \"辉\", \"髅\", \"進\", \"吧\", \"蹀\", \"铛\", \"笛\",\n                                  \"睥\", \"楼\", \"凝\",\n                                  \"況\", \"鸷\",\n                                  \"苠\", \"饺\", \"沙\", \"缴\", \"块\", \"梢\", \"慝\", \"珐\", \"鄏\", \"霰\", \"迸\", \"氆\", \"趵\", \"棣\",\n                                  \"鳔\", \"祆\", \"☆\",\n                                  \"苯\", \"恁\",\n                                  \"螨\", \"庭\", \"缠\", \"槠\", \"津\", \"髋\", \"诔\", \"葶\", \"蜾\", \"坻\", \"蒹\", \"摔\", \"向\", \"垩\",\n                                  \"蹭\", \"淇\", \"筛\",\n                                  \"滬\", \"玡\",\n                                  \"铺\", \"逼\", \"劵\", \"绲\", \"团\", \"鳀\", \"常\", \"玖\", \"擢\", \"株\", \"铵\", \"樽\", \"弭\", \"醇\",\n                                  \"糨\", \"璈\", \"曩\",\n                                  \"潔\", \"祘\",\n                                  \"磨\", \"希\", \"鲅\", \"擂\", \"谗\", \"唳\", \"欷\", \"欧\", \"绋\", \"庙\", \"琬\", \"稳\", \"糊\", \"拥\",\n                                  \"霪\", \"浼\", \"翎\",\n                                  \"俜\", \"摸\",\n                                  \"筚\", \"巯\", \"墼\", \"苫\", \"缩\", \"镚\", \"婪\", \"圹\", \"咚\", \"儿\", \"蒽\", \"婆\", \"鲐\", \"雹\",\n                                  \"霞\", \"嶪\", \"濠\",\n                                  \"琉\", \"澌\",\n                                  \"媢\", \"禤\", \"摺\", \"掏\", \"矢\", \"艄\", \"围\", \"呸\", \"寺\", \"拤\", \"氐\", \"柝\", \"跎\", \"僖\",\n                                  \"挢\", \"茨\", \"涮\",\n                                  \"缫\", \"撸\",\n                                  \"荨\", \"嶷\", \"廋\", \"魋\", \"付\", \"喋\", \"蜗\", \"邙\", \"棹\", \"璪\", \"倡\", \"鞭\", \"游\", \"錦\",\n                                  \"眬\", \"抒\", \"眈\",\n                                  \"培\", \"夏\",\n                                  \"黔\", \"獐\", \"皋\", \"戛\", \"鲀\", \"垒\", \"耽\", \"纤\", \"漩\", \"铈\", \"握\", \"窝\", \"芋\", \"濞\",\n                                  \"截\", \"零\", \"敖\",\n                                  \"眸\", \"怦\",\n                                  \"噎\", \"簋\", \"掳\", \"妣\", \"湃\", \"璠\", \"殄\", \"觞\", \"桅\", \"笋\", \"鲞\", \"踯\", \"傀\", \"犨\",\n                                  \"抵\", \"疰\", \"暌\",\n                                  \"耖\", \"供\",\n                                  \"枳\", \"怂\", \"娶\", \"鸩\", \"捣\", \"庸\", \"逡\", \"懋\", \"颃\", \"長\", \"鼫\", \"姮\", \"蹈\", \"耵\",\n                                  \"乂\", \"骐\", \"殇\",\n                                  \"膏\", \"仳\",\n                                  \"冥\", \"梭\", \"洵\", \"碣\", \"昝\", \"仉\", \"軒\", \"隍\", \"更\", \"な\", \"嵕\", \"拜\", \"粑\", \"鲴\",\n                                  \"吇\", \"秃\", \"尕\",\n                                  \"魃\", \"狨\",\n                                  \"臛\", \"蟥\", \"胨\", \"注\", \"谁\", \"张\", \"才\", \"尸\", \"派\", \"矮\", \"洳\", \"舟\", \"溺\", \"锴\",\n                                  \"寓\", \"籴\", \"夕\",\n                                  \"叭\", \"荠\",\n                                  \"澼\", \"劃\", \"久\", \"私\", \"炉\", \"娟\", \"麤\", \"稂\", \"河\", \"纴\", \"夺\", \"亏\", \"焙\", \"。\",\n                                  \"塗\", \"蜩\", \"栌\",\n                                  \"渡\", \"薰\",\n                                  \"崋\", \"揿\", \"漤\", \"啾\", \"郏\", \"舣\", \"卉\", \"爱\", \"牚\", \"撵\", \"钺\", \"再\", \"企\", \"笺\",\n                                  \"疾\", \"承\", \"俾\",\n                                  \"瞈\", \"邰\",\n                                  \"汾\", \"瘛\", \"檫\", \"蒎\", \"觅\", \"绀\", \"掎\", \"Ｕ\", \"赓\", \"匳\", \"聘\", \"蛤\", \"跤\", \"嗜\",\n                                  \"洼\", \"歔\", \"弟\",\n                                  \"飕\", \"莼\",\n                                  \"嫉\", \"那\", \"滈\", \"践\", \"僦\", \"偎\", \"扢\", \"绚\", \"乕\", \"旳\", \"招\", \"饯\", \"®\", \"攸\",\n                                  \"鞁\", \"囫\", \"铨\",\n                                  \"陒\", \"鷄\",\n                                  \"畀\", \"韨\", \"經\", \"纾\", \"萸\", \"肴\", \"→\", \"宗\", \"迳\", \"鳞\", \"亚\", \"搂\", \"喀\", \"狮\",\n                                  \"坦\", \"瞥\", \"采\",\n                                  \"姝\", \"钳\",\n                                  \"□\", \"剌\", \"維\", \"葸\", \"鼩\", \"公\", \"刀\", \"沩\", \"喔\", \"泺\", \"哉\", \"徨\", \"篝\", \"掊\",\n                                  \"沕\", \"运\", \"偆\",\n                                  \"浒\", \"语\",\n                                  \"乇\", \"仪\", \"萝\", \"疍\", \"踽\", \"碡\", \"熰\", \"荞\", \"嚓\", \"天\", \"饰\", \"泵\", \"械\", \"孑\",\n                                  \"蛰\", \"荟\", \"源\",\n                                  \"峡\", \"矜\",\n                                  \"睬\", \"噬\", \"腆\", \"婉\", \"‘\", \"等\", \"誓\", \"辀\", \"岖\", \"琖\", \"碜\", \"霍\", \"怼\", \"唛\",\n                                  \"弈\", \"淑\", \"疆\",\n                                  \"晴\", \"镴\",\n                                  \"鸡\", \"埚\", \"焕\", \"芦\", \"唻\", \"踅\", \"吴\", \"殡\", \"唏\", \"吨\", \"寡\", \"鹉\", \"絲\", \"坉\",\n                                  \"會\", \"埭\", \"Ⅲ\",\n                                  \"捏\", \"墅\",\n                                  \"卓\", \"叙\", \"徇\", \"柜\", \"各\", \"荭\", \"J\", \"恝\", \"囐\", \"蓉\", \"犋\", \"叡\", \"莺\", \"颌\",\n                                  \"蒸\", \"饸\", \"疋\",\n                                  \"玊\", \"兢\",\n                                  \"鱽\", \"藍\", \"杳\", \"辂\", \"獘\", \"拔\", \"侪\", \"湍\", \"膂\", \"渔\", \"瘊\", \"雉\", \"稁\", \"職\",\n                                  \"僤\", \"鄳\", \"祁\",\n                                  \"稱\", \"I\",\n                                  \"裴\", \"锉\", \"曹\", \"鲶\", \"挨\", \"哑\", \"鷪\", \"鏠\", \"煞\", \"师\", \"蛲\", \"牁\", \"琅\", \"告\",\n                                  \"媒\", \"祭\", \"确\",\n                                  \"荚\", \"亰\",\n                                  \"蝗\", \"阗\", \"歩\", \"疲\", \"f\", \"唣\", \"愛\", \"郾\", \"棍\", \"山\", \"狲\", \"纽\", \"蚡\", \"栂\",\n                                  \"馓\", \"诊\", \"猴\",\n                                  \"喤\", \"来\",\n                                  \"继\", \"桎\", \"嬛\", \"骞\", \"邴\", \"暄\", \"贼\", \"昴\", \"廿\", \"克\", \"耔\", \"彤\", \"鹭\", \"葓\",\n                                  \"骢\", \"龁\", \"鏡\",\n                                  \"瀚\", \"赅\",\n                                  \"韩\", \"譄\", \"榷\", \"殚\", \"膛\", \"须\", \"、\", \"砖\", \"唶\", \"番\", \"蛘\", \"畴\", \"铠\", \"亢\",\n                                  \"氓\", \"铰\", \"炻\",\n                                  \"筫\", \"迢\",\n                                  \"兰\", \"玺\", \"砻\", \"积\", \"莜\", \"吸\", \"监\", \"膦\", \"迪\", \"迷\", \"冷\", \"哀\", \"贳\", \"瞄\",\n                                  \"器\", \"鹡\", \"惺\",\n                                  \"徐\", \"酢\",\n                                  \"寒\", \"Ⓡ\", \"倾\", \"飞\", \"楽\", \"涢\", \"队\", \"舆\", \"赤\", \"璩\", \"戳\", \"殳\", \"掮\", \"舴\",\n                                  \"蜷\", \"宄\", \"拴\",\n                                  \"癌\", \"舛\",\n                                  \"婀\", \"抟\", \"靡\", \"骍\", \"揸\", \"思\", \"慧\", \"平\", \"橘\", \"臭\", \"硖\", \"卬\", \"畈\", \"兠\",\n                                  \"茸\", \"脂\", \"魚\",\n                                  \"晩\", \"御\",\n                                  \"龋\", \"涣\", \"罨\", \"爍\", \"糌\", \"汧\", \"缐\", \"贽\", \"要\", \"祀\", \"鲊\", \"爼\", \"獯\", \"瀣\",\n                                  \"棋\", \"肈\", \"佣\",\n                                  \"娣\", \"柩\",\n                                  \"枸\", \"偃\", \"v\", \"唷\", \"劍\", \"榴\", \"槐\", \"漫\", \"洽\", \"蒡\", \"籼\", \"魔\", \"峋\", \"第\",\n                                  \"歙\", \"萧\", \"谮\",\n                                  \"埯\", \"撮\",\n                                  \"马\", \"绡\", \"裘\", \"鹋\", \"蓬\", \"显\", \"噶\", \"倒\", \"镳\", \"艽\", \"窬\", \"拳\", \"樯\", \"跋\",\n                                  \"詹\", \"钥\", \"心\",\n                                  \"嶽\", \"嚋\",\n                                  \"戎\", \"吕\", \"涂\", \"悃\", \"麦\", \"骋\", \"推\", \"箩\", \"硚\", \"匆\", \"村\", \"五\", \"杨\", \"凑\",\n                                  \"鞫\", \"镰\", \"伥\",\n                                  \"诒\", \"纣\",\n                                  \"崃\", \"鸻\", \"翰\", \"辌\", \"廛\", \"證\", \"舢\", \"盼\", \"腿\", \"圳\", \"贱\", \"皿\", \"隆\", \"屈\",\n                                  \"龏\", \"瓒\", \"顏\",\n                                  \"↓\", \"赈\",\n                                  \"煙\", \"窍\", \"韧\", \"壁\", \"莰\", \"箬\", \"蹋\", \"褰\", \"峥\", \"悚\", \"坜\", \"环\", \"回\", \"疼\",\n                                  \"渍\", \"蝄\", \"东\",\n                                  \"臂\", \"坩\",\n                                  \"走\", \"痍\", \"或\", \"蜀\", \"熳\", \"蜻\", \"佐\", \"懿\", \"嚅\", \"紗\", \"螭\", \"忖\", \"顶\", \"狡\",\n                                  \"吲\", \"洣\", \"帛\",\n                                  \"呶\", \"柞\",\n                                  \"柫\", \"酿\", \"粥\", \"琢\", \"呵\", \"踝\", \"榀\", \"呲\", \"價\", \"鼋\", \"欺\", \"此\", \"背\", \"猎\",\n                                  \"昱\", \"濡\", \"稚\",\n                                  \"欠\", \"暇\",\n                                  \"茬\", \"牙\", \"迹\", \"尼\", \"氛\", \"膠\", \"缯\", \"娼\", \"骚\", \"姒\", \"鬟\", \"霁\", \"鲔\", \"者\",\n                                  \"驰\", \"倩\", \"馉\",\n                                  \"工\", \"芬\",\n                                  \"烙\", \"卦\", \"Ｃ\", \"裂\", \"垲\", \"摆\", \"珮\", \"缏\", \"杞\", \"绘\", \"司\", \"如\", \"姞\", \"荆\",\n                                  \"挖\", \"跗\", \"伍\",\n                                  \"氚\", \"钘\",\n                                  \"郢\", \"轱\", \"篆\", \"吭\", \"夡\", \"鹫\", \"讷\", \"轺\", \"！\", \"匈\", \"待\", \"聱\", \"黏\", \"海\",\n                                  \"蹶\", \"趋\", \"鎮\",\n                                  \"觊\", \"江\",\n                                  \"咸\", \"富\", \"艴\", \"稗\", \"钜\", \"搏\", \"壶\", \"鲮\", \"薪\", \"猞\", \"轰\", \"踪\", \"赣\", \"循\",\n                                  \"序\", \"噻\", \"若\",\n                                  \"裾\", \"许\",\n                                  \"癞\", \"吓\", \"判\", \"踔\", \"查\", \"蚀\", \"［\", \"樓\", \"坌\", \"岳\", \"榄\", \"役\", \"倜\", \"⒂\",\n                                  \"旭\", \"溆\", \"惯\",\n                                  \"咀\", \"跫\",\n                                  \"选\", \"囱\", \"污\", \"镶\", \"⒁\", \"淠\", \"氮\", \"酯\", \"寅\", \"芼\", \"炊\", \"夯\", \"郪\", \"农\",\n                                  \"褲\", \"嘬\", \"蹻\",\n                                  \"烔\", \"罄\",\n                                  \"开\", \"靴\", \"镇\", \"杯\", \"羰\", \"硪\", \"籍\", \"摘\", \"馀\", \"餐\", \"眯\", \"⑴\", \"呗\", \"巫\",\n                                  \"幤\", \"蒤\", \"蒗\",\n                                  \"镥\", \"檵\",\n                                  \"盛\", \"純\", \"娃\", \"●\", \"耿\", \"巡\", \"婴\", \"槔\", \"i\", \"颊\", \"Ⅳ\", \"栅\", \"绅\", \"邘\", \"冉\",\n                                  \"碧\", \"使\",\n                                  \"熨\", \"羞\",\n                                  \"扼\", \"漳\", \"觯\", \"楊\", \"励\", \"逑\", \"咄\", \"之\", \"斤\", \"嘣\", \"鹰\", \"媸\", \"鲂\", \"褚\",\n                                  \"磚\", \"琨\", \"聪\",\n                                  \"牖\", \"太\",\n                                  \"蓍\", \"涫\", \"≤\", \"虽\", \"鸽\", \"燧\", \"褊\", \"聿\", \"壬\", \"然\", \"疚\", \"莲\", \"悴\", \"簃\",\n                                  \"颓\", \"坠\", \"瞬\",\n                                  \"汳\", \"l\",\n                                  \"登\", \"瘼\", \"窳\", \"桤\", \"縯\", \"匣\", \"坡\", \"↑\", \"愦\", \"攘\", \"渭\", \"嬢\", \"鲰\", \"性\",\n                                  \"楚\", \"澈\", \"赪\",\n                                  \"達\", \"鄯\",\n                                  \"罅\", \"帽\", \"茠\", \"底\", \"嫜\", \"奏\", \"浅\", \"荽\", \"楹\", \"鼍\", \"枵\", \"嗔\", \"滍\", \"椴\",\n                                  \"嵩\", \"氤\", \"搠\",\n                                  \"两\", \"榔\",\n                                  \"树\", \"吝\", \"基\", \"峂\", \"栎\", \"侮\", \"舸\", \"遂\", \"颡\", \"锷\", \"杼\", \"酔\", \"幄\", \"哽\",\n                                  \"睢\", \"陔\", \"※\",\n                                  \"嚆\", \"宬\",\n                                  \"宽\", \"髦\", \"笾\", \"保\", \"蹊\", \"榕\", \"咏\", \"椋\", \"丧\", \"裤\", \"骛\", \"逧\", \"弇\", \"崆\",\n                                  \"樘\", \"疤\", \"鸤\",\n                                  \"伞\", \"抚\",\n                                  \"诎\", \"诵\", \"豢\", \"佳\", \"差\", \"埝\", \"极\", \"黍\", \"煜\", \"曰\", \"阱\", \"悞\", \"叹\", \"垤\",\n                                  \"藁\", \"嗵\", \"崔\",\n                                  \"卫\", \"珂\",\n                                  \"憯\", \"蔬\", \"菜\", \"碑\", \"扈\", \"铆\", \"夹\", \"衡\", \"弱\", \"挈\", \"徜\", \"疠\", \"丶\", \"遠\",\n                                  \"提\", \"斧\", \"炟\",\n                                  \"肺\", \"B\",\n                                  \"她\", \"晟\", \"谎\", \"邱\", \"粳\", \"酽\", \"爨\", \"鬼\", \"伧\", \"兹\", \"嶓\", \"谤\", \"饕\", \"揶\",\n                                  \"谱\", \"歡\", \"髪\",\n                                  \"餍\", \"泳\",\n                                  \"郞\", \"谣\", \"汉\", \"褐\", \"非\", \"刽\", \"缅\", \"饴\", \"齐\", \"兴\", \"涯\", \"芫\", \"凡\", \"褶\",\n                                  \"晡\", \"努\", \"蚶\",\n                                  \"彥\", \"皤\",\n                                  \"砌\", \"黼\", \"吹\", \"指\", \"㙟\", \"蓁\", \"鹜\", \"話\", \"拊\", \"辨\", \"盎\", \"肌\", \"旘\", \"软\",\n                                  \"颍\", \"甏\", \"滚\",\n                                  \"旦\", \"滨\",\n                                  \"间\", \"尴\", \"对\", \"鄘\", \"称\", \"镗\", \"咅\", \"璐\", \"怔\", \"垛\", \"洎\", \"瓮\", \"绨\", \"脚\",\n                                  \"遒\", \"吊\", \"纸\",\n                                  \"蹅\", \"经\",\n                                  \"泉\", \"武\", \"汀\", \"歪\", \"败\", \"拾\", \"铪\", \"吼\", \"邹\", \"磊\", \"论\", \"岛\", \"厍\", \"锛\",\n                                  \"芎\", \"芭\", \"音\",\n                                  \"澧\", \"镕\",\n                                  \"锒\", \"宙\", \"牵\", \"忱\", \"嫔\", \"麯\", \"澉\", \"擐\", \"砥\", \"撞\", \"痴\", \"盹\", \"畿\", \"厾\",\n                                  \"酸\", \"俑\", \"脽\",\n                                  \"鸈\", \"枷\",\n                                  \"咨\", \"蔹\", \"诂\", \"胰\", \"董\", \"脶\", \"黩\", \"髓\", \"鉵\", \"澎\", \"鲽\", \"梧\", \"樱\", \"诜\",\n                                  \"鲯\", \"跂\", \"盂\",\n                                  \"浴\", \"苻\",\n                                  \"锅\", \"實\", \"碁\", \"嘛\", \"氕\", \"艮\", \"涟\", \"绢\", \"姿\", \"茝\", \"砘\", \"簿\", \"穷\", \"镃\",\n                                  \"∈\", \"抽\", \"事\",\n                                  \"誜\", \"窅\",\n                                  \"瀘\", \"鲹\", \"兖\", \"嵎\", \"陧\", \"榍\", \"轶\", \"柿\", \"藤\", \"薏\", \"娆\", \"骷\", \"梅\", \"摒\",\n                                  \"睪\", \"剪\", \"羸\",\n                                  \"忧\", \"邝\",\n                                  \"跺\", \"旆\", \"堕\", \"伫\", \"绍\", \"疵\", \"樟\", \"–\", \"绾\", \"蜴\", \"靸\", \"侃\", \"瘘\", \"珧\",\n                                  \"遨\", \"縠\", \"信\",\n                                  \"充\", \"桔\",\n                                  \"黇\", \"劬\", \"脒\", \"良\", \"俵\", \"颙\", \"轹\", \"犿\", \"屐\", \"牾\", \"４\", \"兮\", \"澝\", \"汗\",\n                                  \"沼\", \"铲\", \"濋\",\n                                  \"鹬\", \"丝\",\n                                  \"妫\", \"重\", \"蒺\", \"磲\", \"曚\", \"尔\", \"国\", \"桐\", \"俣\", \"剐\", \"哼\", \"恹\", \"哧\", \"藔\",\n                                  \"谓\", \"轨\", \"眩\",\n                                  \"痞\", \"添\",\n                                  \"鬯\", \"库\", \"梱\", \"婕\", \"蜢\", \"贿\", \"敕\", \"泯\", \"羟\", \"龇\", \"垸\", \"左\", \"肖\", \"辎\",\n                                  \"鞣\", \"谄\", \"可\",\n                                  \"腺\", \"末\",\n                                  \"狞\", \"贷\", \"嗌\", \"仕\", \"楞\", \"膻\", \"臻\", \"欻\", \"洲\", \"所\", \"檀\", \"抔\", \"罹\", \"牒\",\n                                  \"仫\", \"芨\", \"柄\",\n                                  \"嫩\", \"酒\",\n                                  \"祙\", \"渠\", \"的\", \"笨\", \"鳐\", \"楡\", \"过\", \"苡\", \"核\", \"拖\", \"阢\", \"莒\", \"凤\", \"锋\",\n                                  \"`\", \"硎\", \"弁\",\n                                  \"鬶\", \"朐\",\n                                  \"忏\", \"於\", \"昊\", \"剟\", \"咳\", \"湘\", \"日\", \"满\", \"哨\", \"螵\", \"餪\", \"放\", \"佶\", \"葵\",\n                                  \"硷\", \"ｃ\", \"抱\",\n                                  \"锥\", \"芮\",\n                                  \"啻\", \"惊\", \"峁\", \"琊\", \"嶲\", \"撺\", \"煅\", \"屏\", \"袗\", \"鄞\", \"梓\", \"鹌\", \"宅\", \"赂\",\n                                  \"鱼\", \"洱\", \"騳\",\n                                  \"E\", \"物\",\n                                  \"觏\", \"雙\", \"瑀\", \"上\", \"淩\", \"愀\", \"❋\", \"鄙\", \"憝\", \"沛\", \"硫\", \"产\", \"垯\", \"亁\",\n                                  \"枭\", \"堰\", \"赑\",\n                                  \"趾\", \"庹\",\n                                  \"腭\", \"迨\", \"拚\", \"晒\", \"蜇\", \"扣\", \"纰\", \"闵\", \"窭\", \"椽\", \"菏\", \"嘁\", \"伛\", \"郸\",\n                                  \"素\", \"殷\", \"表\",\n                                  \"躞\", \"笸\",\n                                  \"耻\", \"荧\", \"辛\", \"篑\", \"馈\", \"壮\", \"耩\", \"宛\", \"慰\", \"盡\", \"塆\", \"铯\", \"苏\", \"王\",\n                                  \"桕\", \"⑧\", \"°\",\n                                  \"浚\", \"栉\",\n                                  \"朘\", \"虚\", \"骆\", \"坂\", \"秤\", \"鲋\", \"蕊\", \"渝\", \"呦\", \"潼\", \"驱\", \"诼\", \"峇\", \"盤\",\n                                  \"趴\", \"肄\", \"笑\",\n                                  \"讹\", \"貋\",\n                                  \"穂\", \"啼\", \"趟\", \"暽\", \"傣\", \"蜎\", \"挎\", \"陳\", \"勖\", \"戴\", \"旃\", \"瞎\", \"舌\", \"幻\",\n                                  \"喾\", \"赁\", \"Ｅ\",\n                                  \"播\", \"诀\",\n                                  \"蟛\", \"鹛\", \"骶\", \"輸\", \"連\", \"醳\", \"逅\", \"奉\", \"崖\", \"娩\", \"幔\", \"佃\", \"扅\", \"阔\",\n                                  \"生\", \"贬\", \"疯\",\n                                  \"珀\", \"苶\",\n                                  \"屯\", \"裣\", \"蹯\", \"蝮\", \"解\", \"陂\", \"疝\", \"茈\", \"帑\", \"议\", \"仲\", \"埙\", \"竺\", \"峰\",\n                                  \"遮\", \"涎\", \"穸\",\n                                  \"阂\", \"潵\",\n                                  \"镱\", \"例\", \"荑\", \"u\", \"脎\", \"衍\", \"轲\", \"⑵\", \"虾\", \"颚\", \"钞\", \"²\", \"伴\", \"根\", \"沣\",\n                                  \"腌\", \"户\",\n                                  \"~\", \"辙\",\n                                  \"愧\", \"噤\", \"觥\", \"波\", \"铗\", \"纂\", \"鲺\", \"僚\", \"毐\", \"〇\", \"桼\", \"祗\", \"慢\", \"啵\",\n                                  \"坏\", \"吗\", \"嗞\",\n                                  \"甬\", \"曈\",\n                                  \"徹\", \"灏\", \"混\", \"渌\", \"括\", \"脖\", \"汝\", \"現\", \"訇\", \"紅\", \"飘\", \"虢\", \"腱\", \"旄\",\n                                  \"嬴\", \"昨\", \"孀\",\n                                  \"蚁\", \"呛\",\n                                  \"讳\", \"病\", \",\", \"喈\", \"蒋\", \"镭\", \"葩\", \"耲\", \"鳈\", \"锄\", \"喘\", \"返\", \"傕\", \"咆\",\n                                  \"享\", \"枥\", \"瓠\",\n                                  \"茳\", \"铱\",\n                                  \"脘\", \"暹\", \"廒\", \"爝\", \"橹\", \"瞑\", \"铎\", \"岢\", \"叁\", \"翏\", \"捭\", \"賀\", \"悉\", \"帝\",\n                                  \"芥\", \"牀\", \"闌\",\n                                  \"毯\", \"亍\",\n                                  \"弧\", \"锆\", \"币\", \"祊\", \"纔\", \"齑\", \"肟\", \"绤\", \"獨\", \"翚\", \"颢\", \"係\", \"鍪\", \"粉\",\n                                  \"统\", \"诗\", \"娜\",\n                                  \"褥\", \"鈺\",\n                                  \"湔\", \"呤\", \"犸\", \"湨\", \"泣\", \"蟾\", \"犾\", \"烛\", \"斐\", \"朦\", \"室\", \"诨\", \"榭\", \"煦\",\n                                  \"醺\", \"敞\", \"燮\",\n                                  \"糅\", \"衽\",\n                                  \"孔\", \"猄\", \"疭\", \"辰\", \"钽\", \"胁\", \"釆\", \"钉\", \"胤\", \"涧\", \"弼\", \"濯\", \"汨\", \"颖\",\n                                  \"茫\", \"皑\", \"遏\",\n                                  \"捃\", \"坭\",\n                                  \"燴\", \"肩\", \"滞\", \"玢\", \"巽\", \"砺\", \"蜿\", \"毁\", \"億\", \"骥\", \"本\", \"忽\", \"肚\", \"搽\",\n                                  \"靰\", \"郴\", \"跆\",\n                                  \"客\", \"酣\",\n                                  \"α\", \"屎\", \"辩\", \"殂\", \"垝\", \"紫\", \"秦\", \"喇\", \"凶\", \"傧\", \"铐\", \"蘊\", \"補\", \"贤\",\n                                  \"竿\", \"途\", \"慗\",\n                                  \"榖\", \"券\",\n                                  \"莠\", \"逆\", \"鳇\", \"误\", \"崟\", \"妇\", \"磷\", \"捧\", \"莸\", \"⇋\", \"绺\", \"稻\", \"填\", \"逋\",\n                                  \"侈\", \"隶\", \"侵\",\n                                  \"翥\", \"惘\",\n                                  \"惧\", \"鸥\", \"赠\", \"壳\", \"芯\", \"巩\", \"獗\", \"硅\", \"搎\", \"鲛\", \"9\", \"夸\", \"穆\", \"缜\",\n                                  \"诓\", \"观\", \"薛\",\n                                  \"咎\", \"杧\",\n                                  \"页\", \"饫\", \"瑟\", \"率\", \"礤\", \"悭\", \"畔\", \"匯\", \"匮\", \"鼠\", \"犒\", \"芡\", \"傍\", \"嫂\",\n                                  \"啸\", \"鄉\", \"哭\",\n                                  \"鄱\", \"捷\",\n                                  \"靺\", \"嚒\", \"嘀\", \"哒\", \"#\", \"拼\", \"钚\", \"魁\", \"霣\", \"眶\", \"郊\", \"死\", \"愁\", \"箭\",\n                                  \"鼙\", \"签\", \"害\",\n                                  \"斛\", \"睑\",\n                                  \"蟜\", \"余\", \"墨\", \"様\", \"读\", \"養\", \"貉\", \"较\", \"浆\", \"翩\", \"徂\", \"冕\", \"铧\", \"列\",\n                                  \"诈\", \"穝\", \"缑\",\n                                  \"纲\", \"志\",\n                                  \"舀\", \"甾\", \"举\", \"馁\", \"ä\", \"畹\", \"榼\", \"垢\", \"襁\", \"麟\", \"灭\", \"佴\", \"镩\", \"酝\",\n                                  \"柒\", \"梯\", \"傈\",\n                                  \"萭\", \"悫\",\n                                  \"莨\", \"搞\", \"＋\", \"兄\", \"偲\", \"攀\", \"曝\", \"嵝\", \"喳\", \"从\", \"遶\", \"撴\", \".\", \"鄄\",\n                                  \"欲\", \"挺\", \"娡\",\n                                  \"发\", \"速\",\n                                  \"胲\", \"褀\", \"态\", \"行\", \"蚓\", \"坼\", \"适\", \"厦\", \"寐\", \"带\", \"緃\", \"醤\", \"珽\", \"‧\",\n                                  \"溍\", \"斋\", \"鐀\",\n                                  \"朝\", \"欢\",\n                                  \"传\", \"築\", \"咪\", \"据\", \"蹜\", \"医\", \"妄\", \"肇\", \"囝\", \"怡\", \"镎\", \"桩\", \"轩\", \"岔\",\n                                  \"腐\", \"矽\", \"媵\",\n                                  \"搒\", \"菔\",\n                                  \"拘\", \"Ｄ\", \"欃\", \"唧\", \"瞒\", \"郈\", \"绦\", \"吟\", \"撝\", \"醉\", \"镣\", \"匝\", \"拎\", \"砒\",\n                                  \"顸\", \"袁\", \"驼\",\n                                  \"愔\", \"实\",\n                                  \"國\", \"奧\", \"胩\", \"府\", \"逾\", \"愕\", \"廷\", \"碌\", \"锖\", \"狩\", \"褴\", \"镢\", \"芷\", \"娥\",\n                                  \"唤\", \"┌\", \"云\",\n                                  \"О\", \"檔\",\n                                  \"驴\", \"躯\", \"驺\", \"洃\", \"檑\", \"窴\", \"（\", \"腕\", \"立\", \"楯\", \"齮\", \"〔\", \"漆\", \"k\", \"芍\",\n                                  \"蹽\", \"鬓\",\n                                  \"概\", \"楣\",\n                                  \"唐\", \"闲\", \"糗\", \"旱\", \"幸\", \"腽\", \"嗄\", \"迂\", \"镠\", \"顿\", \"扥\", \"圃\", \"烜\", \"馍\",\n                                  \"佝\", \"岷\", \"童\",\n                                  \"悦\", \"┐\",\n                                  \"铌\", \"袈\", \"靓\", \"骸\", \"和\", \"乔\", \"灸\", \"泓\", \"临\", \"睿\", \"掖\", \"偿\", \"鐘\", \"犁\",\n                                  \"祓\", \"鈴\", \"搌\",\n                                  \"授\", \"鹳\",\n                                  \"赢\", \"怅\", \"絪\", \"硬\", \"芙\", \"螅\", \"”\", \"傢\", \"避\", \"裕\", \"歁\", \"全\", \"衰\", \"仃\",\n                                  \"媛\", \"鬻\", \"跽\",\n                                  \"沌\", \"急\",\n                                  \"猷\", \"激\", \"巉\", \"哝\", \"渣\", \"笫\", \"跳\", \"螫\", \"熜\", \"Ｚ\", \"筷\", \"佩\", \"啶\", \"萃\",\n                                  \"頫\", \"荙\", \"出\",\n                                  \"孽\", \"钟\",\n                                  \"戡\", \"釉\", \"咬\", \"滦\", \"鹇\", \"贯\", \"鹮\", \"具\", \"翁\", \"机\", \"濱\", \"谳\", \"釣\", \"懑\",\n                                  \"葛\", \"袯\", \"谭\",\n                                  \"质\", \"胴\",\n                                  \"誊\", \"侗\", \"⑩\", \"静\", \"蚜\", \"溋\", \"嫪\", \"嗲\", \"瑭\", \"座\", \"舫\", \"靶\", \"棘\", \"泊\",\n                                  \"嵖\", \"摧\", \"勋\",\n                                  \"僡\", \"藉\",\n                                  \"疖\", \"巂\", \"随\", \"罾\", \"崚\", \"猹\", \"憨\", \"苘\", \"斓\", \"鼷\", \"利\", \"谲\", \"剔\", \"艺\",\n                                  \"箓\", \"蛀\", \"鲚\",\n                                  \"搐\", \"裟\",\n                                  \"捶\", \"绌\", \"揪\", \"帮\", \"缥\", \"匍\", \"冀\", \"杻\", \"逛\", \"邑\", \"禾\", \"郰\", \"黜\", \"丘\",\n                                  \"樂\", \"滌\", \"緣\",\n                                  \"胃\", \"苄\",\n                                  \"巾\", \"瑜\", \"元\", \"蝶\", \"层\", \"烧\", \"级\", \"岭\", \"蘭\", \"繇\", \"蝓\", \"洞\", \"奢\", \"则\",\n                                  \"政\", \"矾\", \"啭\",\n                                  \"瘠\", \"碴\",\n                                  \"忤\", \"身\", \"匠\", \"警\", \"饩\", \"犬\", \"皲\", \"箔\", \"豕\", \"虑\", \"草\", \"喟\", \"芤\", \"逭\",\n                                  \"艳\", \"幡\", \"姚\",\n                                  \"賓\", \"饪\",\n                                  \"卯\", \"敌\", \"烽\", \"嫚\", \"黝\", \"豺\", \"㭗\", \"教\", \"偕\", \"板\", \"茹\", \"孤\", \"人\", \"狻\",\n                                  \"寰\", \"厕\", \"玲\",\n                                  \"璨\", \"锵\",\n                                  \"搛\", \"勍\", \"匾\", \"聃\", \"奘\", \"垃\", \"焓\", \"喽\", \"嫫\", \"貌\", \"瘐\", \"嚰\", \"孟\", \"衔\",\n                                  \"郎\", \"账\", \"础\",\n                                  \"电\", \"黑\",\n                                  \"骁\", \"拨\", \"濆\", \"圉\", \"刮\", \"闭\", \"竣\", \"铅\", \"羔\", \"硌\", \"筑\", \"难\", \"管\", \"苕\",\n                                  \"眺\", \"嫄\", \"竖\",\n                                  \"榟\", \"崴\",\n                                  \"摭\", \"狐\", \"娑\", \"②\", \"罽\", \"谊\", \"←\", \"狳\", \"铫\", \"凯\", \"狉\", \"９\", \"肪\", \"崤\", \"莊\",\n                                  \"妨\", \"缶\",\n                                  \"滃\", \"瀦\",\n                                  \"揉\", \"肫\", \"恧\", \"糯\", \"嵬\", \"５\", \"裆\", \"嚷\", \"稣\", \"隐\", \"仂\", \"て\", \"驹\", \"籽\",\n                                  \"肢\", \"尘\", \"苈\",\n                                  \"撷\", \"镲\",\n                                  \"趹\", \"晤\", \"唱\", \"鉏\", \"篌\", \"驩\", \"雍\", \"闳\", \"拄\", \"藜\", \"朴\", \"伺\", \"诳\", \"房\",\n                                  \"吱\", \"Й\", \"鳄\",\n                                  \"罿\", \"祧\",\n                                  \"酩\", \"郅\", \"耎\", \"尜\", \"绝\", \"禅\", \"揠\", \"鎏\", \"慕\", \"麥\", \"呜\", \"鸫\", \"党\", \"尝\",\n                                  \"砑\", \"牌\", \"踉\",\n                                  \"刨\", \"襻\",\n                                  \"㾄\", \"螽\", \"谌\", \"止\", \"抑\", \"爻\", \"磬\", \"铄\", \"蓠\", \"委\", \"汲\", \"鹑\", \"╱\", \"嚣\",\n                                  \"彝\", \"穄\", \"穹\",\n                                  \"態\", \"醋\",\n                                  \"⒀\", \"叼\", \"婳\", \"簌\", \"渥\", \"很\", \"甸\", \"帅\", \"锏\", \"与\", \"樾\", \"泷\", \"棼\", \"湲\",\n                                  \"越\", \"祥\", \"短\",\n                                  \"顼\", \"阘\",\n                                  \"宋\", \"馘\", \"鈉\", \"未\", \"囍\", \"浏\", \"叻\", \"箜\", \"鑽\", \"法\", \"曲\", \"淤\", \"僮\", \"做\",\n                                  \"强\", \"析\", \"磕\",\n                                  \"谠\", \"染\",\n                                  \"促\", \"朊\", \"隼\", \"铉\", \"莆\", \"蝣\", \"孛\", \"薮\", \"s\", \"惴\", \"秘\", \"妩\", \"訄\", \"蔓\",\n                                  \"喷\", \"诡\", \"犷\",\n                                  \"酐\", \"酇\",\n                                  \"刹\", \"壅\", \"甫\", \"史\", \"孃\", \"髌\", \"螬\", \"擤\", \"漏\", \"寞\", \"奡\", \"悢\", \"颔\", \"岁\",\n                                  \"耄\", \"；\", \"又\",\n                                  \"锭\", \"鲤\",\n                                  \"癔\", \"杰\", \"孥\", \"酲\", \"蓐\", \"耋\", \"捆\", \"庖\", \"面\", \"鹈\", \"殊\", \"剡\", \"峪\", \"识\",\n                                  \"锨\", \"归\", \"茴\",\n                                  \"—\", \"菤\",\n                                  \"汁\", \"攝\", \"液\", \"鼐\", \"示\", \"讠\", \"男\", \"凍\", \"ò\", \"明\", \"莓\", \"砜\", \"崎\", \"蜂\",\n                                  \"斡\", \"榫\", \"娅\",\n                                  \"钪\", \"昙\",\n                                  \"胜\", \"欣\", \"怨\", \"◆\", \"粗\", \"秷\", \"节\", \"市\", \"贩\", \"祟\", \"弍\", \"蒟\", \"烁\", \"糧\",\n                                  \"蠃\", \"編\", \"黙\",\n                                  \"壕\", \"戚\",\n                                  \"犊\", \"桥\", \"仺\", \"孳\", \"怯\", \"皓\", \"倆\", \"垮\", \"扩\", \"诮\", \"钝\", \"脯\", \"晏\", \"帔\",\n                                  \"葫\", \"瑾\", \"運\",\n                                  \"孬\", \"跄\",\n                                  \"掣\", \"癜\", \"掌\", \"墀\", \"禇\", \"耸\", \"蜓\", \"鹆\", \"鄢\", \"攰\", \"瘢\", \"暝\", \"鸣\", \"峧\",\n                                  \"遵\", \"笃\", \"畚\",\n                                  \"帧\", \"晨\",\n                                  \"镔\", \"搜\", \"靠\", \"咐\", \"韓\", \"绮\", \"觉\", \"拦\", \"斲\", \"疽\", \"掐\", \"尽\", \"許\", \"矶\",\n                                  \"镉\", \"豹\", \"粞\",\n                                  \"袋\", \"酵\",\n                                  \"蛙\", \"戕\", \"劉\", \"髀\", \"彭\", \"玎\", \"囿\", \"郐\", \"善\", \"睃\", \"結\", \"拧\", \"邯\", \"讧\",\n                                  \"召\", \"椭\", \"瑪\",\n                                  \"痼\", \"庼\",\n                                  \"反\", \"疱\", \"屠\", \"荣\", \"君\", \"胍\", \"乙\", \"臬\", \"头\", \"诰\", \"讪\", \"席\", \"晁\", \":\",\n                                  \"理\", \"槿\", \"璘\",\n                                  \"禧\", \"呢\",\n                                  \"蹙\", \"擒\", \"鸲\", \"丐\", \"苓\", \"壑\", \"滥\", \"⑾\", \"炗\", \"礴\", \"耕\", \"卅\", \"唿\", \"苛\",\n                                  \"寵\", \"窖\", \"麻\",\n                                  \"蕨\", \"沤\",\n                                  \"氢\", \"虔\", \"癃\", \"及\", \"崛\", \"爽\", \"蛔\", \"颤\", \"膲\", \"桢\", \"坐\", \"蟞\", \"儇\", \"葚\",\n                                  \"骤\", \"誤\", \"寝\",\n                                  \"嘭\", \"灰\",\n                                  \"汹\", \"韂\", \"铮\", \"慒\", \"寶\", \"肽\", \"摅\", \"紧\", \"亞\", \"潸\", \"悯\", \"橛\", \"檗\", \"闹\",\n                                  \"愿\", \"担\", \"袄\",\n                                  \"棚\", \"垟\",\n                                  \"塄\", \"婞\", \"麈\", \"麸\", \"暗\", \"咦\", \"跞\", \"谡\", \"盈\", \"磐\", \"慎\", \"瘰\", \"掼\", \"憔\",\n                                  \"研\", \"被\", \"贮\",\n                                  \"莛\", \"至\",\n                                  \"呀\", \"庑\", \"矫\", \"摛\", \"怃\", \"缙\", \"磺\", \"即\", \"驻\", \"瘤\", \"偏\", \"℃\", \"嫘\", \"癫\",\n                                  \"汈\", \"鹟\", \"搅\",\n                                  \"辅\", \"璀\",\n                                  \"阊\", \"绻\", \"瑙\", \"蓂\", \"棺\", \"孢\", \"铊\", \"鼒\", \"果\", \"砮\", \"飾\", \"凰\", \"Я\", \"遗\",\n                                  \"祛\", \"纮\", \"劲\",\n                                  \"霹\", \"骃\",\n                                  \"绔\", \"薅\", \"瀵\", \"垅\", \"？\", \"轻\", \"惇\", \"怕\", \"啥\", \"哙\", \"燎\", \"缆\", \"匡\", \"怫\",\n                                  \"卞\", \"朋\", \"酏\",\n                                  \"阑\", \"爾\",\n                                  \"伏\", \"敏\", \"埼\", \"罩\", \"菹\", \"艋\", \"肭\", \"鯭\", \"杋\", \"裀\", \"撬\", \"蕺\", \"惠\", \"大\",\n                                  \"爇\", \"笈\", \"絷\",\n                                  \"琳\", \"谫\",\n                                  \"诛\", \"糇\", \"袢\", \"倓\", \"髃\", \"觽\", \"埏\", \"寖\", \"個\", \"筴\", \"外\", \"漯\", \"樭\", \"喁\",\n                                  \"杀\", \"臑\", \"缇\",\n                                  \"裸\", \"巅\",\n                                  \"毹\", \"茅\", \"忆\", \"琼\", \"唑\", \"烷\", \"项\", \"隋\", \"约\", \"排\", \"吮\", \"谂\", \"宝\", \"牲\",\n                                  \"瘫\", \"娄\", \"沂\",\n                                  \"醫\", \"拭\",\n                                  \"纺\", \"蹰\", \"哞\", \"风\", \"霆\", \"值\", \"酺\", \"侠\", \"螾\", \"埂\", \"育\", \"夷\", \"鮼\", \"怍\",\n                                  \"鸠\", \"Θ\", \"瞳\",\n                                  \"阇\", \"耥\",\n                                  \"羝\", \"伽\", \"洴\", \"記\", \"楔\", \"颼\", \"沪\", \"邢\", \"冰\", \"昀\", \"阙\", \"洌\", \"嫦\", \"杂\",\n                                  \"仔\", \"芑\", \"潴\",\n                                  \"痄\", \"桨\",\n                                  \"连\", \"碓\", \"塈\", \"Ｆ\", \"昇\", \"何\", \"桦\", \"晥\", \"驵\", \"旋\", \"药\", \"银\", \"奋\", \"灣\",\n                                  \"俐\", \"絡\", \"嫁\",\n                                  \"浮\", \"为\",\n                                  \"鞅\", \"科\", \"颦\", \"潽\", \"镍\", \"鸨\", \"粵\", \"骂\", \"拱\", \"韫\", \"盆\", \"赎\", \"尿\", \"钿\",\n                                  \"坍\", \"唁\", \"秧\",\n                                  \"昌\", \"曆\",\n                                  \"颋\", \"遭\", \"秭\", \"褔\", \"腋\", \"〉\", \"吉\", \"漓\", \"臆\", \"焘\", \"已\", \"制\", \"钹\", \"鴨\",\n                                  \"咖\", \"莘\", \"P\",\n                                  \"碥\", \"互\",\n                                  \"治\", \"标\", \"膝\", \"伪\", \"浿\", \"纛\", \"郗\", \"看\", \"佧\", \"糖\", \"篓\", \"亡\", \"´\", \"骙\",\n                                  \"澡\", \"影\", \"窂\",\n                                  \"紬\", \"镅\",\n                                  \"慌\", \"框\", \"晋\", \"説\", \"丢\", \"凹\", \"卖\", \"巧\", \"蹉\", \"乾\", \"莫\", \"Z\", \"谔\", \"矧\",\n                                  \"铑\", \"暴\", \"庄\",\n                                  \"湿\", \"活\",\n                                  \"穿\", \"腩\", \"筣\", \"水\", \"６\", \"琦\", \"迈\", \"伯\", \"洄\", \"抡\", \"▪\", \"酋\", \"荤\", \"雒\",\n                                  \"粕\", \"簠\", \"菰\",\n                                  \"髁\", \"枇\",\n                                  \"陲\", \"多\", \"仗\", \"央\", \"滁\", \"胸\", \"梏\", \"痉\", \"姑\", \"襞\", \"﹑\", \"齿\", \"弩\", \"花\",\n                                  \"吆\", \"赫\", \"岵\",\n                                  \"佪\", \"谑\",\n                                  \"锤\", \"轴\", \"盐\", \"馄\", \"臜\", \"戢\", \"涠\", \"鸸\", \"糟\", \"孪\", \"禁\", \"蒲\", \"化\", \"疏\",\n                                  \"痰\", \"脾\", \"刈\",\n                                  \"應\", \"珍\",\n                                  \"膺\", \"扌\", \"廙\", \"汜\", \"牍\", \"虐\", \"婿\", \"啕\", \"彻\", \"赝\", \"陶\", \"蠲\", \">\", \"位\",\n                                  \"屁\", \"醍\", \"粢\",\n                                  \"挪\", \"臌\",\n                                  \"滹\", \"遴\", \"馨\", \"n\", \"稼\", \"徊\", \"酌\", \"轸\", \"债\", \"朰\", \"程\", \"辞\", \"痊\", \"插\",\n                                  \"鹩\", \"郄\", \"铝\",\n                                  \"狱\", \"叱\",\n                                  \"同\", \"寄\", \"搪\", \"蚯\", \"魭\", \"舍\", \"旷\", \"闰\", \"涝\", \"民\", \"嗡\", \"苌\", \"馕\", \"姥\",\n                                  \"屉\", \"啧\", \"枢\",\n                                  \"❤\", \"窕\",\n                                  \"钊\", \"矬\", \"菂\", \"佑\", \"≠\", \"獬\", \"桁\", \"墟\", \"皖\", \"鼻\", \"它\", \"歇\", \"独\", \"好\",\n                                  \"晕\", \"蚝\", \"锞\",\n                                  \"颈\", \"豚\",\n                                  \"聖\", \"裉\", \"扫\", \"岿\", \"悒\", \"佥\", \"苗\", \"妞\", \"晚\", \"圭\", \"茼\", \"脲\", \"摊\", \"窠\",\n                                  \"狸\", \"抻\", \"场\",\n                                  \"呼\", \"囟\",\n                                  \"噗\", \"狺\", \"困\", \"瀹\", \"削\", \"衬\", \"谰\", \"蛆\", \"訓\", \"鉄\", \"痃\", \"炱\", \"蝻\", \"我\",\n                                  \"暨\", \"骓\", \"馋\",\n                                  \"埤\", \"脞\",\n                                  \"晃\", \"螟\", \"洮\", \"泛\", \"掾\", \"穑\", \"米\", \"蕲\", \"玦\", \"讙\", \"逢\", \"劐\", \"袭\", \"凫\",\n                                  \"僳\", \"畛\", \"晷\",\n                                  \"鳕\", \"Ë\",\n                                  \"愬\", \"坫\", \"鳡\", \"鞯\", \"叔\", \"胂\", \"囚\", \"筋\", \"青\", \"度\", \"涕\", \"琰\", \"﹔\", \"径\",\n                                  \"陇\", \"睛\", \"链\",\n                                  \"状\", \"逶\",\n                                  \"蘅\", \"“\", \"庇\", \"邽\", \"纥\", \"踶\", \"爺\", \"狭\", \"钫\", \"桃\", \"弛\", \"淳\", \"办\", \"茕\",\n                                  \"砸\", \"喱\", \"仅\",\n                                  \"潞\", \"杈\",\n                                  \"得\", \"咕\", \"俞\", \"检\", \"借\", \"恋\", \"驿\", \"倌\", \"钢\", \"琐\", \"哆\", \"撙\", \"箫\", \"川\",\n                                  \"猥\", \"牢\", \"蹁\",\n                                  \"城\", \"馏\",\n                                  \"锡\", \"楝\", \"蛱\", \"奈\", \"瑶\", \"桺\", \"耆\", \"翟\", \"阒\", \"稲\", \"橐\", \"萱\", \"惹\", \"蘼\",\n                                  \"主\", \"擦\", \"蟒\",\n                                  \"台\", \"佬\",\n                                  \"荫\", \"廖\", \"笏\", \"铕\", \"衣\", \"洇\", \"炒\", \"瀍\", \"崭\", \"圻\", \"洚\", \"契\", \"嫱\", \"倏\",\n                                  \"晶\", \"了\", \"堠\",\n                                  \"勰\", \"椎\",\n                                  \"询\", \"梗\", \"飒\", \"锰\", \"览\", \"溇\", \"寻\", \"蓅\", \"【\", \"碇\", \"井\", \"露\", \"顔\", \"堌\",\n                                  \"庳\", \"踩\", \"ｉ\",\n                                  \"饷\", \"俊\",\n                                  \"楫\", \"條\", \"搭\", \"奍\", \"羽\", \"憋\", \"岘\", \"毡\", \"曜\", \"乃\", \"′\", \"针\", \"羲\", \"菓\",\n                                  \"吩\", \"咩\", \"鞘\",\n                                  \"尊\", \"宫\",\n                                  \"舜\", \"啖\", \"惗\", \"北\", \"懊\", \"骇\", \"阄\", \"躅\", \"权\", \"缲\", \"肥\", \"铜\", \"《\", \"录\",\n                                  \"也\", \"棬\", \"煮\",\n                                  \"舄\", \"厮\",\n                                  \"'\", \"順\", \"受\", \"霜\", \"新\", \"售\", \"牞\", \"圣\", \"妗\", \"犴\", \"宥\", \"哦\", \"陀\", \"卺\",\n                                  \"冚\", \"蹒\", \"亸\",\n                                  \"禮\", \"骰\",\n                                  \"瑢\", \"弒\", \"抛\", \"谷\", \"嫰\", \"動\", \"嘌\", \"惩\", \"枣\", \"忌\", \"茡\", \"爵\", \"嘚\", \"郧\",\n                                  \"丨\", \"敲\", \"帚\",\n                                  \"沭\", \"槊\",\n                                  \"⑶\", \"專\", \"毶\", \"圄\", \"磅\", \"蛭\", \"由\", \"蠹\", \"剜\", \"诫\", \"秆\", \"愠\", \"藓\", \"母\",\n                                  \"请\", \"衩\", \"忸\",\n                                  \"蜕\", \"饽\",\n                                  \"晦\", \"倔\", \"腠\", \"痛\", \"品\", \"簧\", \"父\", \"锐\", \"描\", \"蓰\", \"蛴\", \"箍\", \"兕\", \"苜\",\n                                  \"饼\", \"奚\", \"泗\",\n                                  \"裥\", \"皂\",\n                                  \"嵚\", \"，\", \"澶\", \"蠖\", \"沅\", \"馎\", \"籀\", \"菝\", \"眵\", \"糥\", \"铽\", \"痤\", \"颟\", \"淄\",\n                                  \"作\", \"抉\", \"俄\",\n                                  \"么\", \"郑\",\n                                  \"耒\", \"佛\", \"1\", \"纡\", \"鸢\", \"④\", \"鎚\", \"壖\", \"遢\", \"鬈\", \"拢\", \"托\", \"哈\", \"節\",\n                                  \"橦\", \"冼\", \"六\",\n                                  \"耗\", \"樵\",\n                                  \"涔\", \"舳\", \"龌\", \"衿\", \"婧\", \"栓\", \"椹\", \"嘘\", \"膊\", \"茁\", \"丹\", \"螃\", \"剖\", \"洧\",\n                                  \"珞\", \"潺\", \"孱\",\n                                  \"呐\", \"萩\",\n                                  \"刷\", \"引\", \"说\", \"熟\", \"/\", \"靖\", \"酷\", \"耠\", \"饬\", \"菌\", \"洙\", \"荃\", \"饲\", \"酾\",\n                                  \"阁\", \"陬\", \"铿\",\n                                  \"倻\", \"牮\",\n                                  \"鞡\", \"撕\", \"倘\", \"盒\", \"曺\", \"襦\", \"辄\", \"算\", \"塬\", \"潢\", \"羖\", \"湾\", \"续\", \"△\",\n                                  \"疙\", \"谖\", \"嘅\",\n                                  \"遑\", \"篚\",\n                                  \"筮\", \"氍\", \"递\", \"尧\", \"G\", \"{\", \"分\", \"埒\", \"@\", \"蜍\", \"荼\", \"襆\", \"槭\", \"檠\", \"縢\",\n                                  \"濉\", \"梆\",\n                                  \"隔\", \"镛\",\n                                  \"倞\", \"润\", \"瓯\", \"瓢\", \"蟊\", \"沐\", \"啷\", \"砚\", \"皱\", \"剅\", \"儙\", \"错\", \"幌\", \"滓\",\n                                  \"砗\", \"郤\", \"喧\",\n                                  \"峣\", \"簸\",\n                                  \"毖\", \"踏\", \"锕\", \"…\", \"悖\", \"谧\", \"醵\", \"加\", \"镐\", \"泐\", \"傫\", \"胪\", \"缄\", \"卩\",\n                                  \"蓼\", \"丸\", \"垌\",\n                                  \"汞\", \"宴\",\n                                  \"膙\", \"圊\", \"矻\", \"嚏\", \"漾\", \"幕\", \"駕\", \"葒\", \"绪\", \"袪\", \"镋\", \"杭\", \"澴\", \"鬃\",\n                                  \"粟\", \"偻\", \"饳\",\n                                  \"抨\", \"亟\",\n                                  \"温\", \"韶\", \"轿\", \"罟\", \"际\", \"诖\", \"复\", \"坯\", \"骗\", \"*\", \"副\", \"裢\", \"憬\", \"邾\",\n                                  \"崇\", \"蕈\", \"疮\",\n                                  \"粽\", \"炝\",\n                                  \"珲\", \"莅\", \"衾\", \"爲\", \"枯\", \"汛\", \"仁\", \"熏\", \"馥\", \"㎡\", \"檐\", \"锦\", \"竭\", \"颁\",\n                                  \"遽\", \"瘙\", \"样\",\n                                  \"遛\", \"殍\",\n                                  \"湄\", \"消\", \"鳌\", \"痫\", \"鳏\", \"瓶\", \"窈\", \"谚\", \"麒\", \"鸹\", \"蟋\", \"横\", \"唠\", \"瘪\",\n                                  \"媪\", \"侔\", \"鐵\",\n                                  \"系\", \"杖\",\n                                  \"m\", \"叉\", \"沟\", \"衢\", \"寘\", \"■\", \"弗\", \"建\", \"疣\", \"珣\", \"綦\", \"劈\", \"道\", \"嘈\",\n                                  \"先\", \"芝\", \"降\",\n                                  \"滕\", \"邵\",\n                                  \"邺\", \"給\", \")\", \"廨\", \"郛\", \"势\", \"氇\", \"坤\", \"昂\", \"焼\", \"奕\", \"闱\", \"朓\", \"毽\",\n                                  \"还\", \"坨\", \"銭\",\n                                  \"龂\", \"銎\",\n                                  \"壽\", \"矸\", \"窒\", \"①\", \"玷\", \"蝽\", \"泃\", \"烀\", \"魈\", \"★\", \"慶\", \"K\", \"嘶\", \"酶\", \"呖\",\n                                  \"殿\", \"乡\",\n                                  \"䄂\", \"阳\",\n                                  \"轪\", \"碱\", \"譬\", \"摩\", \"鳖\", \"刳\", \"地\", \"包\", \"貊\", \"悝\", \"圩\", \"今\", \"嚭\", \"凳\",\n                                  \"谕\", \"馃\", \"捎\",\n                                  \"佯\", \"侬\",\n                                  \"愆\", \"微\", \"涤\", \"舔\", \"蛇\", \"筲\", \"助\", \"锾\", \"剧\", \"缧\", \"簪\", \"惚\", \"柢\", \"庾\",\n                                  \"虹\", \"雪\", \"猡\",\n                                  \"脔\", \"亶\",\n                                  \"烨\", \"Ｔ\", \"锗\", \"芈\", \"女\", \"动\", \"偬\", \"琥\", \"县\", \"诣\", \"精\", \"嬗\", \"栀\", \"艨\",\n                                  \"智\", \"冗\", \"闼\",\n                                  \"嗝\", \"z\",\n                                  \"夢\", \"拿\", \"鹲\", \"尤\", \"啮\", \"﹐\", \"ɔ\", \"钓\", \"施\", \"萼\", \"邻\", \"竞\", \"碶\", \"艰\", \"》\",\n                                  \"翻\", \"馆\",\n                                  \"橪\", \"逝\",\n                                  \"臀\", \"淫\", \"枉\", \"羿\", \"拇\", \"溷\", \"徒\", \"涓\", \"關\", \"聋\", \"嵊\", \"殖\", \"叛\", \"敫\",\n                                  \"舵\", \"亊\", \"诽\",\n                                  \"菱\", \"苎\",\n                                  \"破\", \"腚\", \"A\", \"嵋\", \"扊\", \"挂\", \"篷\", \"棂\", \"碟\", \"復\", \"劾\", \"韪\", \"疔\", \"粒\",\n                                  \"鲵\", \"毙\", \"店\",\n                                  \"锻\", \"衮\",\n                                  \"寳\", \"◎\", \"斯\", \"倦\", \"醢\", \"曾\", \"茚\", \"荐\", \"隗\", \"芊\", \"豪\", \"亻\", \"哂\", \"堃\",\n                                  \"宇\", \"桑\", \"匋\",\n                                  \"植\", \"亥\",\n                                  \"撂\", \"棒\", \"蟠\", \"W\", \"迟\", \"蚋\", \"溊\", \"缌\", \"鞚\", \"蚤\", \"適\", \"赌\", \"卣\", \"厚\",\n                                  \"鲾\", \"匙\", \"槃\",\n                                  \"郎\", \"鬏\",\n                                  \"玳\", \"龄\", \"丈\", \"圮\", \"冑\", \"院\", \"葬\", \"嵐\", \"瓦\", \"孵\", \"漶\", \"星\", \"吐\", \"獍\",\n                                  \"藠\", \"萍\", \"振\",\n                                  \"潜\", \"龉\",\n                                  \"匦\", \"粹\", \"諾\", \"畵\", \"峦\", \"＆\", \"埕\", \"朵\", \"戒\", \"炳\", \"酪\", \"绂\", \"篁\", \"测\",\n                                  \"殆\", \"涌\", \"业\",\n                                  \"盏\", \"醊\",\n                                  \"笆\", \"孰\", \"骊\", \"湛\", \"踰\", \"汎\", \"哲\", \"澙\", \"鲷\", \"√\", \"鄣\", \"亿\", \"螺\", \"吠\",\n                                  \"伟\", \"凛\", \"骡\",\n                                  \"恻\", \"巨\",\n                                  \"扶\", \"泡\", \"峯\", \"韵\", \"腎\", \"睦\", \"栖\", \"}\", \"笙\", \"疌\", \"绶\", \"忒\", \"哥\", \"价\",\n                                  \"纻\", \"薨\", \"漂\",\n                                  \"濮\", \"缮\",\n                                  \"勐\", \"妮\", \"傩\", \"陛\", \"陷\", \"柆\", \"瞭\", \"鲳\", \"烬\", \"喉\", \"固\", \"桡\", \"聊\", \"逦\",\n                                  \"猊\", \"梻\", \"涵\",\n                                  \"栒\", \"逍\",\n                                  \"饥\", \"凼\", \"早\", \"姣\", \"蕤\", \"塌\", \"桀\", \"亳\", \"虻\", \"鹨\", \"典\", \"情\", \"怄\", \"商\",\n                                  \"钍\", \"赚\", \"塥\",\n                                  \"煽\", \"垱\",\n                                  \"蝴\", \"乓\", \"籁\", \"帷\", \"锢\", \"圪\", \"快\", \"赘\", \"杵\", \"漠\", \"滴\", \"斩\", \"拈\", \"蚕\",\n                                  \"陽\", \"篡\", \"郦\",\n                                  \"瞻\", \"郯\",\n                                  \"鳍\", \"幽\", \"旅\", \"乖\", \"鹖\", \"斫\", \"痂\", \"肸\", \"右\", \"锂\", \"永\", \"泾\", \"茎\", \"觱\",\n                                  \"彼\", \"擎\", \"䨱\",\n                                  \"翱\", \"徝\",\n                                  \"醅\", \"求\", \"湫\", \"転\", \"溴\", \"師\", \"瓣\", \"蝠\", \"铭\", \"社\", \"苞\", \"仇\", \"噌\", \"你\",\n                                  \"嗾\", \"雳\", \"榧\",\n                                  \"駹\", \"雯\",\n                                  \"叨\", \"遫\", \"氏\", \"航\", \"辗\", \"溢\", \"历\", \"楷\", \"诱\", \"雏\", \"梳\", \"藕\", \"屺\", \"槎\",\n                                  \"钐\", \"燘\", \"棽\",\n                                  \"驸\", \"褪\",\n                                  \"清\", \"十\", \"廰\", \"移\", \"筌\", \"揾\", \"瞠\", \"姽\", \"馑\", \"恢\", \"逸\", \"p\", \"瑚\", \"茄\",\n                                  \"鹧\", \"俗\", \"璟\",\n                                  \"栊\", \"买\",\n                                  \"瀛\", \"镒\", \"球\", \"氲\", \"缛\", \"講\", \"胀\", \"焒\", \"悲\", \"翕\", \"拗\", \"T\", \"桌\", \"脓\",\n                                  \"闪\", \"稀\", \"狎\",\n                                  \"火\", \"柁\",\n                                  \"琴\", \"澍\", \"嗟\", \"龚\", \"楮\", \"噼\", \"隽\", \"栩\", \"焻\", \"哩\", \"藻\", \"瘸\", \"含\", \"偶\",\n                                  \"界\", \"嘃\", \"昶\",\n                                  \"澄\", \"頤\",\n                                  \"绒\", \"鲁\", \"麝\", \"决\", \"撒\", \"岙\", \"季\", \"刿\", \"肝\", \"蒉\", \"蓇\", \"财\", \"完\", \"蠔\",\n                                  \"脉\", \"肱\", \"谙\",\n                                  \"蜮\", \"郭\",\n                                  \"慨\", \"晔\", \"髂\", \"蛏\", \"眨\", \"钗\", \"葺\", \"惆\", \"娈\", \"瞵\", \"踞\", \"棁\", \"蝢\", \"嚎\",\n                                  \"猝\", \"必\", \"剞\",\n                                  \"关\", \"咛\",\n                                  \"劫\", \"闸\", \"肯\", \"№\", \"莩\", \"哇\", \"蛑\", \"镬\", \"羡\", \"驊\", \"茂\", \"塍\", \"沓\", \"筱\",\n                                  \"杉\", \"战\", \"茧\",\n                                  \"耙\", \"击\",\n                                  \"需\", \"腊\", \"酎\", \"畦\", \"葙\", \"鹘\", \"韭\", \"嚚\", \"争\", \"域\", \"伢\", \"鞲\", \"哳\", \"栲\",\n                                  \"某\", \"翌\", \"哗\",\n                                  \"焚\", \"螗\",\n                                  \"懲\", \"躲\", \"約\", \"镖\", \"凿\", \"饶\", \"够\", \"剁\", \"铥\", \"应\", \"署\", \"杮\", \"蒂\", \" \",\n                                  \"坷\", \"礅\", \"款\",\n                                  \"梁\", \"鄜\",\n                                  \"髹\", \"選\", \"伤\", \"路\", \"З\", \"亲\", \"野\", \"啦\", \"捯\", \"憷\", \"鲩\", \"札\", \"怏\", \"塘\",\n                                  \"绊\", \"愍\", \"簦\",\n                                  \"牦\", \"黥\",\n                                  \"鳜\", \"唉\", \"Ｗ\", \"沱\", \"蚺\", \"甪\", \"摉\", \"协\", \"耨\", \"娱\", \"桄\", \"仆\", \"类\", \"搡\",\n                                  \"滤\", \"岗\", \"休\",\n                                  \"坶\", \"谒\",\n                                  \"忭\", \"飨\", \"闷\", \"菟\", \"鲣\", \"驷\", \"湜\", \"疡\", \"蚩\", \"萊\", \"䝉\", \"硒\", \"贺\", \"弃\",\n                                  \"徘\", \"陨\", \"否\",\n                                  \"遥\", \"妒\",\n                                  \"X\", \"間\", \"觜\", \"跬\", \"夬\", \"羮\", \"喙\", \"赇\", \"鹗\", \"『\", \"砀\", \"残\", \"绿\", \"小\",\n                                  \"勘\", \"瀌\", \"扉\",\n                                  \"耧\", \"衅\",\n                                  \"挟\", \"乐\", \"鹏\", \"墁\", \"澜\", \"噍\", \"坊\", \"術\", \"嗖\", \"知\", \"盉\", \"圆\", \"嗈\", \"蘖\",\n                                  \"资\", \"爭\", \"=\",\n                                  \"刑\", \"裒\",\n                                  \"〈\", \"淸\", \"定\", \"袒\", \"戗\", \"钤\", \"吵\", \"旯\", \"蓝\", \"裎\", \"溅\", \"贰\", \"荏\", \"甥\",\n                                  \"悌\", \"勤\", \"炽\",\n                                  \"换\", \"躜\",\n                                  \"!\", \"薄\", \"痱\", \"双\", \"匕\", \"肷\", \"挥\", \"茑\", \"船\", \"砝\", \"煤\", \"荜\", \"弘\", \"▏\",\n                                  \"陆\", \"稔\", \"朽\",\n                                  \"冤\", \"頉\",\n                                  \"遊\", \"砰\", \"迎\", \"碎\", \"唪\", \"醪\", \"稆\", \"练\", \"锸\", \"阵\", \"皇\", \"香\", \"镀\", \"嫡\",\n                                  \"持\", \"桶\", \"垄\",\n                                  \"阍\", \"戥\",\n                                  \"臣\", \"琛\", \"涘\", \"惶\", \"赙\", \"葆\", \"住\", \"舊\", \"枝\", \"媲\", \"蓣\", \"龅\", \"搦\", \"_\",\n                                  \"图\", \"力\", \"纪\",\n                                  \"悍\", \"麗\",\n                                  \"戽\", \"腧\", \"绣\", \"跟\", \"哕\", \"打\", \"蝰\", \"Φ\", \"吞\", \"功\", \"夀\", \"劓\", \"沇\", \"熔\",\n                                  \"占\", \"隰\", \"命\",\n                                  \"佻\", \"豁\",\n                                  \"苣\", \"楦\", \"掇\", \"蛛\", \"唢\", \"郜\", \"霉\", \"鲏\", \"予\", \"沸\", \"殻\", \"俯\", \"探\", \"篪\",\n                                  \"荇\", \"邈\", \"烯\",\n                                  \"忮\", \"伸\",\n                                  \"岬\", \"×\", \"锧\", \"窸\", \"毪\", \"纩\", \"蛋\", \"讯\", \"骼\", \"叶\", \"楂\", \"犟\", \"站\", \"盘\",\n                                  \"隈\", \"喝\", \"儣\",\n                                  \"兵\", \"尚\",\n                                  \"孙\", \"爿\", \"芜\", \"羁\", \"旖\", \"溽\", \"迩\", \"京\", \"７\", \"龃\", \"狝\", \"缦\", \"缁\", \"鲃\",\n                                  \"怒\", \"故\", \"據\",\n                                  \"枫\", \"髙\",\n                                  \"亭\", \"耳\", \"飚\", \"O\", \"编\", \"箸\", \"幼\", \"氘\", \"鞮\", \"匐\", \"祯\", \"臃\", \"辫\", \"磋\",\n                                  \"溝\", \"墙\", \"诚\",\n                                  \"阻\", \"档\",\n                                  \"歆\", \"璃\", \"悻\", \"婤\", \"映\", \"瑞\", \"牂\", \"话\", \"忠\", \"潘\", \"惋\", \"冬\", \"氦\", \"腔\",\n                                  \"胬\", \"盔\", \"\\\"\",\n                                  \"饮\", \"贶\",\n                                  \"嚄\", \"儆\", \"溜\", \"砷\", \"樇\", \"跏\", \"泩\", \"馌\", \"埃\", \"莙\", \"革\", \"珙\", \"乌\", \"鍋\",\n                                  \"穴\", \"石\", \"珺\",\n                                  \"熹\", \"诞\",\n                                  \"<\", \"腉\", \"姊\", \"钧\", \"罪\", \"拆\", \"赊\", \"殒\", \"堇\", \"仑\", \"掺\", \"塃\", \"獴\", \"迥\",\n                                  \"盦\", \"檬\", \"益\",\n                                  \"居\", \"鼑\",\n                                  \"异\", \"嘻\", \"悔\", \"旮\", \"况\", \"時\", \"阋\", \"洛\", \"線\", \"＃\", \"型\", \"迕\", \"睇\", \"橱\",\n                                  \"笊\", \"蛞\", \"愚\",\n                                  \"茉\", \"镈\",\n                                  \"镞\", \"垭\", \"扁\", \"泫\", \"搬\", \"古\", \"书\", \"疸\", \"痨\", \"黟\", \"墉\", \"料\", \"并\", \"ㆍ\",\n                                  \"裳\", \"鞑\", \"湮\",\n                                  \"柠\", \"颐\",\n                                  \"形\", \"━\", \"逹\", \"硁\", \"置\", \"韦\", \"瓞\", \"象\", \"殽\", \"均\", \"浓\", \"瞓\", \"椐\", \"洨\",\n                                  \"乱\", \"襜\", \"终\",\n                                  \"優\", \"睹\",\n                                  \"敦\", \"鼬\", \"唆\", \"佼\", \"財\", \"瘃\", \"H\", \"痳\", \"勺\", \"依\", \"虎\", \"蕖\", \"玄\", \"缓\",\n                                  \"滢\", \"^\", \"骅\",\n                                  \"诘\", \"弋\",\n                                  \"：\", \"∩\", \"廪\", \"缈\", \"造\", \"蕉\", \"孖\", \"嫒\", \"寨\", \"意\", \"岽\", \"庶\", \"罗\", \"瞢\",\n                                  \"酹\", \"蔟\", \"赴\",\n                                  \"烂\", \"栋\",\n                                  \"格\", \"矛\", \"驯\", \"词\", \"嗦\", \"剀\", \"蓓\", \"期\", \"鏢\", \"羑\", \"奴\", \"椱\", \"Ａ\", \"狗\",\n                                  \"烟\", \"蹬\", \"案\",\n                                  \"记\", \"讴\",\n                                  \"鳑\", \"侯\", \"霏\", \"焜\", \"沬\", \"份\", \"酦\", \"芗\", \"庚\", \"瑗\", \"鹎\", \"穗\", \"鲠\", \"肛\",\n                                  \"厄\", \"蜔\", \"學\",\n                                  \"伊\", \"⑥\",\n                                  \"琪\", \"邒\", \"少\", \"霖\", \"蓖\", \"猜\", \"塾\", \"肾\", \"罃\", \"伐\", \"钩\", \"骈\", \"溟\", \"饵\",\n                                  \"莉\", \"é\", \"刖\",\n                                  \"洯\", \"堉\",\n                                  \"锝\", \"趔\", \"七\", \"萁\", \"竹\", \"憾\", \"蚨\", \"离\", \"柔\", \"替\", \"侑\", \"飙\", \"气\", \"震\",\n                                  \"厥\", \"备\", \"刻\",\n                                  \"顽\", \"瞽\",\n                                  \"腄\", \"雄\", \"燃\", \"旬\", \"简\", \"翠\", \"熥\", \"◇\", \"吃\", \"囡\", \"玙\", \"铷\", \"暖\", \"配\",\n                                  \"傻\", \"窄\", \"皈\",\n                                  \"夼\", \"舂\",\n                                  \"乜\", \"苩\", \"攉\", \"雠\", \"茇\", \"锈\", \"酰\", \"粮\", \"祝\", \"考\", \"堍\", \"鳅\", \"彬\", \"▲\",\n                                  \"孝\", \"蠊\", \"顇\",\n                                  \"娲\", \"腥\",\n                                  \"$\", \"珠\", \"厂\", \"诠\", \"蹓\", \"轼\", \"嵫\", \"捩\", \"硗\", \"胺\", \"证\", \"膀\", \"」\", \"胯\",\n                                  \"钷\", \"毂\", \"柙\",\n                                  \"深\", \"沄\",\n                                  \"匹\", \"８\", \"爷\", \"礳\", \"秏\", \"窜\", \"魑\", \"d\", \"转\", \"烆\", \"屿\", \"眙\", \"極\", \"袤\",\n                                  \"護\", \"V\", \"狂\",\n                                  \"柑\", \"玠\",\n                                  \"氩\", \"’\", \"馊\", \"玛\", \"坢\", \"%\", \"燔\", \"颗\", \"舅\", \"暂\", \"艾\", \"芹\", \"溏\", \"晰\",\n                                  \"件\", \"琚\", \"仿\",\n                                  \"祾\", \"酤\",\n                                  \"騠\", \"揳\", \"鲫\", \"蜥\", \"仨\", \"牺\", \"步\", \"讓\", \"港\", \"煲\", \"铴\", \"腦\", \"鳝\", \"危\",\n                                  \"鋪\", \"冠\", \"正\",\n                                  \"柽\", \"抍\",\n                                  \"掘\", \"控\", \"娴\", \"娀\", \"離\", \"手\", \"臾\", \"酗\", \"筼\", \"煸\", \"弹\", \"照\", \"哎\", \"毒\",\n                                  \"颀\", \"诙\", \"刚\",\n                                  \"搢\", \"䧳\",\n                                  \"峒\", \"滋\", \"\\\\\", \"匀\", \"黉\", \"毓\", \"娠\", \"床\", \"浪\", \"祐\", \"铟\", \"4\", \"?\", \"凄\",\n                                  \"飗\", \"蚍\", \"葑\",\n                                  \"抗\", \"鹞\",\n                                  \"糸\", \"红\", \"英\", \"违\", \"橡\", \"眷\", \"防\", \"缬\", \"龠\", \"察\", \"仍\", \"辇\", \"减\", \"闫\",\n                                  \"箴\", \"龍\", \"館\",\n                                  \"屙\", \"翙\",\n                                  \"媽\", \"涴\", \"到\", \"旻\", \"删\", \"瞾\", \"鏖\", \"咭\", \"豨\", \"荘\", \"炭\", \"畼\", \"构\", \"锘\",\n                                  \"鉫\", \"候\", \"扇\",\n                                  \"繄\", \"猩\",\n                                  \"瘵\", \"恺\", \"贵\", \"榦\", \"息\", \"恽\", \"胎\", \"狰\", \"雜\", \"辋\", \"璜\", \"硈\", \"泠\", \"呔\",\n                                  \"蹿\", \"踹\", \"摄\",\n                                  \"炀\", \"坞\",\n                                  \"蹄\", \"裝\", \"赛\", \"蝥\", \"塔\", \"靳\", \"荬\", \"找\", \"仡\", \"淮\", \"比\", \"淆\", \"义\", \"淝\",\n                                  \"卢\", \"辟\", \"寂\",\n                                  \"庒\", \"鳯\",\n                                  \"暲\", \"景\", \"邪\", \"腻\", \"赍\", \"甍\", \"讲\", \"哌\", \"嶝\", \"鎌\", \"总\", \"缱\", \"问\", \"磛\",\n                                  \"谅\", \"拉\", \"靈\",\n                                  \"奭\", \"沆\",\n                                  \"茔\", \"羅\", \"鄠\", \"網\", \"吏\", \"懵\", \"鑫\", \"歌\", \"黹\", \"嵘\", \"涞\", \"碳\", \"崂\", \"婥\",\n                                  \"赞\", \"镑\", \"購\",\n                                  \"幺\", \"鸰\",\n                                  \"饟\", \"蝌\", \"忝\", \"懒\", \"禺\", \"梽\", \"齉\", \"恳\", \"拯\", \"弥\", \"荡\", \"芾\", \"幪\", \"厌\",\n                                  \"馒\", \"蜘\", \"欸\",\n                                  \"吣\", \"１\",\n                                  \"却\", \"榻\", \"碾\", \"袂\", \"錎\", \"钬\", \"無\", \"嬉\", \"笞\", \"蹴\", \"视\", \"雇\", \"创\", \"椟\",\n                                  \"6\", \"瘁\", \"斜\",\n                                  \"傥\", \"喃\",\n                                  \"炷\", \"秾\", \"嘱\", \"茀\", \"犄\", \"窑\", \"庀\", \"潍\", \"伦\", \"䀲\", \"凉\", \"Р\", \"撻\", \"萜\",\n                                  \"二\", \"倨\", \"蔑\",\n                                  \"捕\", \"勚\",\n                                  \"士\", \"鈇\", \"踺\", \"啤\", \"彧\", \"缪\", \"述\", \"傅\", \"颅\", \"畸\", \"畜\", \"滗\", \"慭\", \"琎\",\n                                  \"斌\", \"参\", \"胳\",\n                                  \"骖\", \"稠\",\n                                  \"汰\", \"铻\", \"闯\", \"留\", \"蘘\", \"沏\", \"亦\", \"择\", \"華\", \"禽\", \"砟\", \"祼\", \"狃\", \"噫\",\n                                  \"狼\", \"寤\", \"跪\",\n                                  \"浠\", \"·\",\n                                  \"费\", \"瓘\", \"鼹\", \"锪\", \"箢\", \"垣\", \"慊\", \"虏\", \"秩\", \"偉\", \"镏\", \"钯\", \"恐\", \"鹃\",\n                                  \"菇\", \"炸\", \"潮\",\n                                  \"蟀\", \"硂\",\n                                  \"偌\", \"哏\", \"验\", \"桉\", \"阴\", \"初\", \"掴\", \"鹺\", \"峨\", \"赋\", \"舉\", \"裹\", \"赶\", \"土\",\n                                  \"淋\", \"瘌\", \"沔\",\n                                  \"ｒ\", \"赀\",\n                                  \"淖\", \"茯\", \"怛\", \"谜\", \"洗\", \"似\", \"舡\", \"纳\", \"晓\", \"Ｒ\", \"诐\", \"痹\", \"漪\", \"顺\",\n                                  \"挛\", \"阎\", \"贝\",\n                                  \"钰\", \"惬\",\n                                  \"疬\", \"菀\", \"埘\", \"怙\", \"部\", \"译\", \"鲭\", \"窋\", \"敢\", \"夜\", \"撰\", \"珅\", \"特\", \"襕\",\n                                  \"癖\", \"胡\", \"⒃\",\n                                  \"附\", \"擘\",\n                                  \"痢\", \"尬\", \"鉴\", \"瞋\", \"膨\", \"阽\", \"挲\", \"⒄\", \"骎\", \"帕\", \"缕\", \"计\", \"障\", \"鳆\",\n                                  \"隹\", \"朔\", \"碹\",\n                                  \"当\", \"迦\",\n                                  \"氙\", \"蘑\", \"妓\", \"炬\", \"苊\", \"萎\", \"浈\", \"沥\", \"绯\", \"壤\", \"噱\", \"蹾\", \"驶\", \"葱\",\n                                  \"孕\", \"羹\", \"钻\",\n                                  \"農\", \"勝\",\n                                  \"膈\", \"灿\", \"赆\", \"靿\", \"耱\", \"陪\", \"忙\", \"缰\", \"奶\", \"儒\", \"个\", \"朱\", \"燹\", \"琮\",\n                                  \"轷\", \"錾\", \"箅\",\n                                  \"澳\", \"嗥\",\n                                  \"攥\", \"没\", \"匿\", \"鲆\", \"|\", \"矣\", \"他\", \"鸶\", \"芸\", \"Ｂ\", \"髑\", \"街\", \"巿\", \"廣\",\n                                  \"盯\", \"監\", \"鲸\",\n                                  \"胭\", \"凬\",\n                                  \"寿\", \"挝\", \"绽\", \"+\", \"劝\", \"究\", \"眢\", \"集\", \"衙\", \"卷\", \"j\", \"跶\", \"牡\", \"畯\",\n                                  \"貅\", \"销\", \"發\",\n                                  \"咱\", \"蓊\",\n                                  \"揣\", \"咝\", \"琶\", \"荦\", \"阌\", \"盅\", \"嘹\", \"苟\", \"醮\", \"洪\", \"鲧\", \"钒\", \"柱\", \"氨\",\n                                  \"旰\", \"冽\", \"茭\",\n                                  \"嵇\", \"粲\",\n                                  \"蛾\", \"訾\", \"辔\", \"N\", \"尹\", \"趿\", \"蹲\", \"疟\", \"祠\", \"段\", \"車\", \"网\", \"⒉\", \"舷\",\n                                  \"廐\", \"侣\", \"棵\",\n                                  \"粜\", \"觐\",\n                                  \"铼\", \"锁\", \"兒\", \"舁\", \"时\", \"垦\", \"版\", \"摈\", \"扳\", \"见\", \"腮\", \"嫖\", \"痭\", \"呆\",\n                                  \"簖\", \"伋\", \"鳙\",\n                                  \"珊\", \"麂\",\n                                  \"既\", \"谴\", \"热\", \"超\", \"蠕\", \"铞\", \"e\", \"殓\", \"因\", \"锿\", \"文\", \"禊\", \"皙\", \"鑙\",\n                                  \"爹\", \"鋼\", \"忻\",\n                                  \"秣\", \"镁\",\n                                  \"奠\", \"橉\", \"畺\", \"笮\", \"疹\", \"湝\", \"龟\", \"殃\", \"毵\", \"溃\", \"勢\", \"索\", \"砉\", \"阼\",\n                                  \"堞\", \"酥\", \"冁\",\n                                  \"喊\", \"¥\",\n                                  \"幛\", \"娇\", \"锲\", \"蕃\", \"铘\", \"铍\", \"鴿\", \"响\", \"傲\", \"脏\", \"杓\", \"罕\", \"笥\", \"弦\",\n                                  \"但\", \"缃\", \"扬\",\n                                  \"盲\", \"碚\",\n                                  \"幢\", \"鎖\", \"缺\", \"钋\", \"麽\", \"禳\", \"浃\", \"啄\", \"昧\", \"蒴\", \"帙\", \"琏\", \"咧\", \"舰\",\n                                  \"亵\", \"浊\", \"豳\",\n                                  \"衲\", \"俏\",\n                                  \"镵\", \"浩\", \"勾\", \"槛\", \"榈\", \"徙\", \"鹤\", \"洹\", \"铂\", \"揎\", \"棕\", \"挦\", \"挫\", \"阆\",\n                                  \"衹\", \"甚\", \"近\",\n                                  \"】\", \"簏\",\n                                  \"汽\", \"踮\", \"淌\", \"檇\", \"痔\", \"谝\", \"钙\", \"蕞\", \"蔯\", \"兆\", \"蔽\", \"后\", \"蚬\", \"谸\",\n                                  \"芟\", \"枞\", \"叫\",\n                                  \"栗\", \"餘\",\n                                  \"营\", \"郝\", \"氯\", \"㺃\", \"狍\", \"冏\", \"庛\", \"纱\", \"泼\", \"碍\", \"认\", \"邓\", \"茵\", \"饧\",\n                                  \"闟\", \"惝\", \"裙\",\n                                  \"噙\", \"忘\",\n                                  \"虬\", \"群\", \"S\", \"佗\", \"恼\", \"坟\", \"肮\", \"皮\", \"玃\", \"在\", \"赧\", \"孚\", \"偾\", \"镨\",\n                                  \"恨\", \"葡\", \"西\",\n                                  \"缞\", \"挠\",\n                                  \"逃\", \"吾\", \"膪\", \"焦\", \"翘\", \"桧\", \"变\", \"渗\", \"繁\", \"際\", \"痘\", \"撼\", \"筅\", \"坑\",\n                                  \"前\", \"玑\", \"数\",\n                                  \"融\", \"鲌\",\n                                  \"讦\", \"窃\", \"鄌\", \"伾\", \"众\", \"攻\", \"彪\", \"锎\", \"焐\", \"殛\", \"锊\", \"嗉\", \"枓\", \"抢\",\n                                  \"鞠\", \"掩\", \"贾\",\n                                  \"搔\", \"皁\",\n                                  \"拶\", \"朗\", \"渺\", \"跛\", \"㛃\", \"鏾\", \"慥\", \"杆\", \"沈\", \"戍\", \"豫\", \"楠\", \"爆\", \"汤\",\n                                  \"昉\", \"耘\", \"缡\",\n                                  \"．\", \"允\",\n                                  \"揜\", \"责\", \"艟\", \"裁\", \"喬\", \"砹\", \"鹣\", \"裼\", \"啉\", \"蛳\", \"酮\", \"听\", \"维\", \"阪\",\n                                  \"獾\", \"浣\", \"訂\",\n                                  \"瘿\", \"蜡\",\n                                  \"泖\", \"蔚\", \"貔\", \"致\", \"禨\", \"尓\", \"糺\", \"绐\", \"遯\", \"笄\", \"邦\", \"圈\", \"洟\", \"缟\",\n                                  \"槲\", \"桹\", \"镓\",\n                                  \"骒\", \"髫\",\n                                  \"暾\", \"像\", \"縻\", \"戊\", \"飧\", \"驽\", \"干\", \"万\", \"绕\", \"披\", \"雅\", \"桊\", \"卡\", \"贲\",\n                                  \"吡\", \"沧\", \"鳟\",\n                                  \"堂\", \"扺\",\n                                  \"岱\", \"封\", \"鄭\", \"螣\", \"瞩\", \"幞\", \"邕\", \"睫\", \"涩\", \"自\", \"趱\", \"愣\", \"威\", \"酊\",\n                                  \"罂\", \"慑\", \"袴\",\n                                  \"架\", \"烘\",\n                                  \"现\", \"灞\", \"钔\", \"股\", \"興\", \"乍\", \"噜\", \"济\", \"碛\", \"兀\", \"诅\", \"柴\", \"瓿\", \"[\",\n                                  \"怿\", \"竦\", \"白\",\n                                  \"黄\", \"阶\",\n                                  \"务\", \"榮\", \"澹\", \"谏\", \"垓\", \"跸\", \"繻\", \"窿\", \"紊\", \"陟\", \"劁\", \"嗑\", \"牯\", \"厉\",\n                                  \"敛\", \"鮕\", \"嘉\",\n                                  \"蔻\", \"鼎\",\n                                  \"恒\", \"硝\", \"溉\", \"骘\", \"窘\", \"任\", \"裱\", \"处\", \"旨\", \"舶\", \"缸\", \"囹\", \"笠\", \"讥\",\n                                  \"泜\", \"脊\", \"煊\",\n                                  \"淦\", \"牝\",\n                                  \"硕\", \"胧\", \"泚\", \"溪\", \"贪\", \"牛\", \"答\", \"瘴\", \"Q\", \"炯\", \"⑤\", \"篾\", \"銀\", \"乩\",\n                                  \"杶\", \"垆\", \"蛐\",\n                                  \"苔\", \"啪\",\n                                  \"y\", \"玮\", \"琫\", \"寮\", \"邂\", \"後\", \"僵\", \"贴\", \"硭\", \"枚\", \"姆\", \"乎\", \"讶\", \"醭\",\n                                  \"橥\", \"脱\", \"蒈\",\n                                  \"擞\", \"忪\",\n                                  \"顾\", \"柚\", \"褿\", \"忲\", \"辖\", \"铡\", \"螠\", \"殉\", \"喆\", \"爡\", \"轮\", \"棰\", \"鲉\", \"跃\",\n                                  \"韬\", \"睡\", \"嘧\",\n                                  \"袅\", \"圗\",\n                                  \"檄\", \"踊\", \"阀\", \"题\", \"桫\", \"林\", \"沉\", \"禚\", \"散\", \"麇\", \"沦\", \"秋\", \"导\", \"斑\",\n                                  \"宰\", \"嘞\", \"暑\",\n                                  \"笱\", \"搋\",\n                                  \"擅\", \"镤\", \"锶\", \"L\", \"厣\", \"有\", \"猗\", \"袆\", \"绞\", \"甭\", \"歧\", \"跣\", \"潦\", \"専\",\n                                  \"绑\", \"飱\", \"廓\",\n                                  \"磔\", \"接\",\n                                  \"腓\", \"窎\", \"瑁\", \"飓\", \"蟪\", \"俎\", \"П\", \"缉\", \"䘵\", \"夙\", \"潟\", \"桷\", \"淡\", \"虺\",\n                                  \"恶\", \"｜\", \"驭\",\n                                  \"怀\", \"邋\",\n                                  \"辢\", \"逻\", \"晖\", \"蜃\", \"蜊\", \"溻\", \"冢\", \"尻\", \"礼\", \"厝\", \"亘\", \"酴\", \"饔\", \"悸\",\n                                  \"戆\", \"什\", \"玚\",\n                                  \"馔\", \"哔\",\n                                  \"沃\", \"竑\", \"葭\", \"垞\", \"鏂\", \"抃\", \"弄\", \"去\", \"焊\", \"焌\", \"x\", \"苇\", \"與\", \"炼\",\n                                  \"蛄\", \"莴\", \"阏\",\n                                  \"薷\", \"禀\",\n                                  \"鸯\", \"栽\", \"冒\", \"姓\", \"0\", \"尃\", \"蜞\", \"毗\", \"骟\", \"秸\", \"荸\", \"柈\", \"恬\", \"赡\",\n                                  \"侏\", \"兑\", \"蝤\",\n                                  \"荷\", \"徳\",\n                                  \"押\", \"挣\", \"腰\", \"宣\", \"鸵\", \"葳\", \"遘\", \"讨\", \"狒\", \"涿\", \"囤\", \"邃\", \"蒜\", \"疑\",\n                                  \"脍\", \"嘟\", \"鹠\",\n                                  \"吻\", \"鄹\",\n                                  \"耦\", \"华\", \"霸\", \"侥\", \"勒\", \"挞\", \"臊\", \"尺\", \"让\", \"榆\", \"阝\", \"鳚\", \"灾\", \"鲬\",\n                                  \"艿\", \"Ⅱ\", \"锩\",\n                                  \"攮\", \"蚊\",\n                                  \"蔁\", \"唝\", \"涅\", \"挹\", \"淏\", \"鏊\", \"氵\", \"鹕\", \"律\", \"對\", \"粱\", \"恫\", \"挻\", \"滏\",\n                                  \"叮\", \"‰\", \"鼯\",\n                                  \"绫\", \"秉\",\n                                  \"怩\", \"質\", \"岐\", \"菊\", \"佤\", \"帏\", \"骺\", \"爰\", \"珉\", \"耪\", \"乞\", \"郕\", \"鲱\", \"雷\",\n                                  \"蒿\", \"不\", \"啐\",\n                                  \"侓\", \"郓\",\n                                  \"歼\", \"拒\", \"胗\", \"寕\", \"旒\", \"勁\", \"婢\", \"诌\", \"蹂\", \"姐\", \"媳\", \"歃\", \"拐\", \"辐\",\n                                  \"拟\", \"醯\", \"雌\",\n                                  \"点\", \"玟\",\n                                  \"您\", \"鲨\", \"载\", \"藩\", \"罔\", \"噀\", \"抹\", \"萏\", \"补\", \"蝎\", \"辈\", \"劢\", \"乚\", \"唔\",\n                                  \"瓜\", \"恿\", \"蟭\",\n                                  \"涸\", \"纬\",\n                                  \"睽\", \"樣\", \"帻\", \"蓥\", \"谯\", \"柯\", \"渴\", \"脁\", \"诲\", \"福\", \"③\", \"熊\", \"羌\", \"疴\",\n                                  \"袖\", \"虿\", \"杏\",\n                                  \"覌\", \"易\",\n                                  \"醾\", \"筒\", \"肤\", \"苷\", \"柃\", \"榇\", \"酬\", \"癸\", \"啰\", \"眛\", \"稷\", \"展\", \"鸾\", \"祢\",\n                                  \"蝾\", \"敵\", \"毛\",\n                                  \"痦\", \"老\",\n                                  \"赐\", \"单\", \"淹\", \"畋\", \"符\", \"奎\", \"绥\", \"轾\", \"鄺\", \"濩\", \"眦\", \"觎\", \"忾\", \"璋\",\n                                  \"刘\", \"翳\", \"菪\",\n                                  \"簟\", \"胼\",\n                                  \"孫\", \"機\", \"獻\", \"低\", \"o\", \"捅\", \"鳥\", \"⑨\", \"卸\", \"废\", \"启\", \"呋\", \"窥\", \"巢\",\n                                  \"揭\", \"咴\", \"趺\",\n                                  \"鲥\", \"空\",\n                                  \"膄\", \"崮\", \"锜\", \"络\", \"納\", \"恤\", \"刭\", \"批\", \"霭\", \"氧\", \"钮\", \"甑\", \"祲\", \"粘\",\n                                  \"辏\", \"∶\", \"臨\",\n                                  \"│\", \"粪\",\n                                  \"惰\", \"肼\", \"浉\", \"橄\", \"5\", \"東\", \"8\", \"漁\", \"浜\", \"忍\", \"奂\", \"遹\", \"扃\", \"扦\",\n                                  \"入\", \"欤\", \"豆\",\n                                  \"悠\", \"蕴\",\n                                  \"萑\", \"媄\", \"龈\", \"÷\", \"磙\", \"鸬\", \"缎\", \"嗯\", \"浕\", \"木\", \"陋\", \"柰\", \"瘩\", \"箨\",\n                                  \"松\", \"躁\", \"鲇\",\n                                  \"彰\", \"恕\",\n                                  \"楗\", \"姨\", \"撅\", \"诹\", \"戮\", \"桓\", \"棉\", \"束\", \"嗍\", \"庋\", \"瞿\", \"郂\", \"哪\", \"町\",\n                                  \"ａ\", \"铁\", \"洫\",\n                                  \"失\", \"栳\",\n                                  \"篇\", \"鳗\", \"眇\", \"椿\", \"義\", \"就\", \"都\", \"镌\", \"阖\", \"夭\", \"拃\", \"跚\", \"業\", \"圬\",\n                                  \"演\", \"篥\", \"３\",\n                                  \"昼\", \"從\",\n                                  \"瞍\", \"蓦\", \"鼾\", \"坪\", \"觫\", \"鲍\", \"馿\", \"妾\", \"密\", \"奥\", \"耰\", \"佟\", \"嘤\", \"貘\",\n                                  \"薯\", \"稽\", \"届\",\n                                  \"褛\", \"钠\",\n                                  \"猿\", \"佈\", \"倍\", \"铩\", \"铙\", \"踵\", \"ｏ\", \"捱\", \"鹐\", \"當\", \"狷\", \"写\", \"遆\", \"钱\",\n                                  \"姗\", \"寸\", \"综\",\n                                  \"挑\", \"礶\",\n                                  \"靼\", \"溯\", \"湟\", \"漱\", \"碰\", \"职\", \"味\", \"Λ\", \"璁\", \"壴\", \"给\", \"碘\", \"恭\", \"苴\",\n                                  \"酚\", \"套\", \"宕\",\n                                  \"辽\", \"窀\",\n                                  \"催\", \"踢\", \"惟\", \"璧\", \"翔\", \"稿\", \"癀\", \"霈\", \"光\", \"膑\", \"妆\", \"庡\", \"圾\", \"躺\",\n                                  \"惮\", \"切\", \"目\",\n                                  \"梦\", \"岫\",\n                                  \"飑\", \"叠\", \"累\", \"鴻\", \"透\", \"量\", \"妻\", \"沨\", \"俪\", \"屣\", \"挚\", \"w\", \"厅\", \"货\",\n                                  \"箧\", \"漦\", \"隙\",\n                                  \"瘥\", \"妃\",\n                                  \"門\", \"鹦\", \"隳\", \"龆\", \"瞪\", \"跑\", \"帼\", \"刺\", \"起\", \"鞴\", \"岸\", \"渫\", \"莽\", \"髭\",\n                                  \"耜\", \"瑛\", \"葉\",\n                                  \"宵\", \"绠\",\n                                  \"眭\", \"畅\", \"茱\", \"卜\", \"濂\", \"浍\", \"冈\", \"脬\", \"厘\", \"夔\", \"纟\", \"槚\", \"哐\", \"萋\",\n                                  \"曼\", \"膳\", \"潲\",\n                                  \"啜\", \"啊\",\n                                  \"猾\", \"捉\", \"箕\", \"㐂\", \"藝\", \"艘\", \"園\", \"妲\", \"灵\", \"蚌\", \"范\", \"&\", \"疥\", \"陑\",\n                                  \"洒\", \"唾\", \"a\",\n                                  \"婄\", \"谋\",\n                                  \"ｔ\", \"唬\", \"宓\", \"瓷\", \"︰\", \"焗\", \"默\", \"噔\", \"菡\", \"恃\", \"亩\", \"边\", \"啟\", \"颞\",\n                                  \"啬\", \"盟\", \"墩\",\n                                  \"汭\", \"缝\",\n                                  \"魇\", \"酡\", \"疗\", \"梾\", \"尾\", \"鹿\", \"锔\", \"溦\", \"酃\", \"囊\", \"掉\", \"罥\", \"报\", \"诤\",\n                                  \"喹\", \"蕙\", \"割\",\n                                  \"蠢\", \"兼\",\n                                  \"俺\", \"升\", \"屦\", \"獠\", \"辣\", \"跹\", \"颧\", \"宪\", \"抬\", \"咿\", \"沲\", \"旗\", \"荩\", \"傒\",\n                                  \"鳳\", \"變\", \"偈\",\n                                  \"薹\", \"钭\",\n                                  \"垧\", \"谪\", \"躐\", \"谀\", \"R\", \"字\", \"怆\", \"陵\", \"追\", \"迓\", \"舞\", \"卲\", \"捲\", \"麾\",\n                                  \"税\", \"方\", \"竴\",\n                                  \"壹\", \"射\",\n                                  \"轫\", \"塞\", \"僧\", \"椠\", \"突\", \"阕\", \"惫\", \"U\", \"佞\", \"秒\", \"友\", \"視\", \"莹\", \"攒\",\n                                  \"荻\", \"俅\", \"筐\",\n                                  \"能\", \"刓\",\n                                  \"拍\", \"浥\", \"揽\", \"谨\", \"军\", \"巷\", \"怵\", \"额\", \"恪\", \"荀\", \"糍\", \"湎\", \"褙\", \"觇\",\n                                  \"效\", \"估\", \"噩\",\n                                  \"恍\", \"聚\",\n                                  \"涛\", \"式\", \"兜\", \"汔\", \"祃\", \"銘\", \"烺\", \"瑄\", \"枘\", \"丁\", \"樗\", \"堙\", \"窗\", \"號\",\n                                  \"鬣\", \"阈\", \"乳\",\n                                  \"簇\", \"绳\",\n                                  \"淞\", \"]\", \"征\", \"聩\", \"凸\", \"礓\", \"柘\", \"懂\", \"㧎\", \"纷\", \"里\", \"爸\", \"靥\", \"莞\",\n                                  \"馅\", \"仞\", \"芏\",\n                                  \"莳\", \"殪\",\n                                  \"煌\", \"落\", \"佚\", \"帱\", \"诶\", \"家\", \"将\", \"浯\", \"抿\", \"讫\", \"趸\", \"筢\", \"绩\", \"原\",\n                                  \"专\", \"滂\", \"嗳\",\n                                  \"踬\", \"泱\",\n                                  \"體\", \"蜱\", \"绵\", \"伻\", \"埗\", \"妤\", \"蔺\", \"赳\", \"嘢\", \"梨\", \"鹪\", \"烤\", \"镦\", \"赉\",\n                                  \"崞\", \"蚰\", \"骝\",\n                                  \"幅\", \"汴\",\n                                  \"丽\", \"访\", \"叩\", \"羼\", \"亓\", \"恸\", \"燥\", \"笤\", \"丑\", \"枰\", \"守\", \"蜚\", \"戈\", \"高\",\n                                  \"q\", \"瓻\", \"隘\",\n                                  \"Ｈ\", \"南\",\n                                  \"剎\", \"扭\", \"骠\", \"孜\", \"园\", \"锬\", \"审\", \"￥\", \"罚\", \"购\", \"裰\", \"泔\", \"醌\", \"醒\",\n                                  \"绎\", \"莪\", \"掬\",\n                                  \"睾\", \"鹁\",\n                                  \"蛊\", \"票\", \"剃\", \"释\", \"调\", \"黛\", \"撩\", \"篱\", \"茌\", \"敓\", \"蜜\", \"魉\", \"鳤\", \"昽\",\n                                  \"俳\", \"辁\", \"键\",\n                                  \"犯\", \"嶙\",\n                                  \"狈\", \"邬\", \"枋\", \"婊\", \"憎\", \"督\", \"救\", \"措\", \"足\", \"码\", \"栟\", \"虼\", \"棻\", \"阅\",\n                                  \"肊\", \"坛\", \"鸱\",\n                                  \"侩\", \"烫\",\n                                  \"湉\", \"脐\", \"戾\", \"旎\", \"膚\", \"椒\", \"境\", \"绛\", \"濛\", \"蓄\", \"章\", \"压\", \"窦\", \"彖\",\n                                  \"阜\", \"咻\", \"神\",\n                                  \"存\", \"诺\",\n                                  \"課\", \"覺\", \"鲈\", \"渚\", \"「\", \"缢\", \"仓\", \"氅\", \"筇\", \"桴\", \"荥\", \"些\", \"纯\", \"肋\",\n                                  \"退\", \"妪\", \"别\",\n                                  \"書\", \"租\",\n                                  \"嚼\", \"芘\", \"笳\", \"涰\", \"馐\", \"熵\", \"犹\", \"朕\", \"猪\", \"蔸\", \"參\", \"觳\", \"舖\", \"蝙\",\n                                  \"骏\", \"织\", \"躏\",\n                                  \"纹\", \"锹\",\n                                  \"蛉\", \"撑\", \"氽\", \"茶\", \"俛\", \"誠\", \"胖\", \"崽\", \"炫\", \"乘\", \"把\", \"趑\", \"谵\", \"骧\",\n                                  \"犍\", \"鸮\", \"灌\",\n                                  \"焯\", \"倭\",\n                                  \"狁\", \"盱\", \"踱\", \"滠\", \"儡\", \"诸\", \"芽\", \"駆\", \"蹼\", \"虱\", \"祇\", \"　\", \"蠡\", \"衄\",\n                                  \"谬\", \"蒍\", \"婺\",\n                                  \"蘧\", \"博\",\n                                  \"捍\", \"磁\", \"慷\", \"釂\", \"蛩\", \"钕\", \"祎\", \"呑\", \"贫\", \"斗\", \"菅\", \"操\", \"规\", \"硼\",\n                                  \"惕\", \"丫\", \"俭\",\n                                  \"肿\", \"骀\",\n                                  \"砼\", \"句\", \"茛\", \"闶\", \"钏\", \"饻\", \"圠\", \"萌\", \"魏\", \"铃\", \"摞\", \"┅\", \"伎\", \"獭\",\n                                  \"田\", \"钴\", \"峭\",\n                                  \"魅\", \"捋\",\n                                  \"唼\", \"鹅\", \"祚\", \"嬷\", \"圖\", \"抄\", \"嶂\", \"鸳\", \"溧\", \"钵\", \"嗽\", \"墠\", \"锌\", \"愈\",\n                                  \"併\", \"踟\", \"羯\",\n                                  \"翅\", \"纠\",\n                                  \"勻\", \"岚\", \"菖\", \"便\", \"祈\", \"毳\", \"屹\", \"掰\", \"倬\", \"扛\", \"巴\", \"拮\", \"绁\", \"跌\",\n                                  \"飯\", \"嵯\", \"翮\",\n                                  \"堤\", \"诃\",\n                                  \"腑\", \"皆\", \"鄂\", \"胾\", \"片\", \"这\", \"浙\", \"雨\", \"鼱\", \"袼\", \"鹊\", \"厢\", \"蛣\", \"摇\",\n                                  \"蛮\", \"揍\", \"⒅\",\n                                  \"啱\", \"薇\",\n                                  \"岈\", \"兔\", \"谇\", \"纶\", \"肉\", \"崩\", \"甩\", \"涪\", \"馼\", \"铣\", \"锚\", \"丙\", \"雲\", \"烹\",\n                                  \"钦\", \"撄\", \"铬\",\n                                  \"令\", \"虮\",\n                                  \"湊\", \"禹\", \"抖\", \"喏\", \"旺\", \"畲\", \"戬\", \"嗷\", \"釜\", \"车\", \"缀\", \"玕\", \"谐\", \"啁\",\n                                  \"怎\", \"下\", \"惑\",\n                                  \"恅\", \"藿\",\n                                  \"筰\", \"帐\", \"祸\", \"镝\", \"喵\", \"刁\", \"习\", \"藏\", \"墓\", \"护\", \"聲\", \"箦\", \"严\", \"按\",\n                                  \"谛\", \"睨\", \"艚\",\n                                  \"歉\", \"蟮\",\n                                  \"胶\", \"盍\", \"鳃\", \"狯\", \"垫\", \"杠\", \"线\", \"3\", \"葖\", \"t\", \"熬\", \"虞\", \"嶶\", \"篮\",\n                                  \"黻\", \"墒\", \"氟\",\n                                  \"嫠\", \"漕\",\n                                  \"腾\", \"哟\", \"玫\", \"撇\", \"垍\", \"靛\", \"翼\", \"淅\", \"省\", \"斥\", \"稞\", \"蠼\", \"谩\", \"埠\",\n                                  \"蘸\", \"刊\", \"烝\",\n                                  \"宁\", \"鹚\",\n                                  \"龊\", \"苪\", \"袷\", \"诧\", \"细\", \"蒌\", \"焅\", \"２\", \"筹\", \"扒\", \"卮\", \"捞\", \"净\", \"菲\",\n                                  \"逮\", \"槍\", \"蛎\",\n                                  \"莱\", \"黠\",\n                                  \"逖\", \"辚\", \"剥\", \"啴\", \"诿\", \"楱\", \"氪\", \"领\", \"嗒\", \"藐\", \"惜\", \"甘\", \"佾\", \"嵴\",\n                                  \"胫\", \";\", \"晳\",\n                                  \"锣\", \"瞅\",\n                                  \"缷\", \"耶\", \"搤\", \"策\", \"咽\", \"邀\", \"霾\", \"悟\", \"属\", \"鸪\", \"牴\", \"贞\", \"趁\", \"丞\",\n                                  \"瘆\", \"豌\", \"著\",\n                                  \"饿\", \"筠\",\n                                  \"划\", \"璇\", \"损\", \"卵\", \"腒\", \"畏\", \"盥\", \"耐\", \"圏\", \"拓\", \"蒙\", \"鋫\", \"劙\", \"蹦\",\n                                  \"熘\", \"烊\", \"匏\",\n                                  \"咔\", \"轘\",\n                                  \"沽\", \"菩\", \"罴\", \"磉\", \"炖\", \"假\", \"枪\", \"龙\", \"俸\", \"焱\", \"四\", \"─\", \"毫\", \"涨\",\n                                  \"浇\", \"椰\", \"賣\",\n                                  \"蘇\", \"真\",\n                                  \"安\", \"坝\", \"枕\", \"鸼\", \"昵\", \"亨\", \"苤\", \"祷\", \"枧\", \"赟\", \"菑\", \"鳂\", \"戌\", \"悄\",\n                                  \"種\", \"鳢\", \"嗣\",\n                                  \"電\", \"颥\",\n                                  \"妯\", \"谟\", \"蜒\", \"训\", \"泍\", \"洁\", \"勇\", \"哿\", \"扰\", \"蟆\", \"螂\", \"刃\", \"絜\", \"曪\",\n                                  \"乒\", \"湖\", \"鞨\",\n                                  \"懜\", \"夤\",\n                                  \"哓\", \"胥\", \"桞\", \"俇\", \"肣\", \"半\", \"于\", \"橼\", \"锑\", \"熙\", \"甜\", \"槌\", \"盾\", \"屃\",\n                                  \"缗\", \"共\", \"碗\",\n                                  \"凇\", \"笔\",\n                                  \"阿\", \"擗\", \"袍\", \"敉\", \"钾\", \"俶\", \"蚪\", \"琤\", \"凱\", \"辕\", \"à\", \"恣\", \"皴\", \"創\",\n                                  \"寥\", \"妳\", \"腈\",\n                                  \"畤\", \"迤\",\n                                  \"垠\", \"触\", \"趙\", \"铤\", \"逊\", \"羊\", \"碉\", \"锱\", \"骨\", \"仄\", \"斟\", \"俚\", \"啡\", \"芩\",\n                                  \"迫\", \"杷\", \"种\",\n                                  \"鹄\", \"牗\",\n                                  \"耑\", \"艇\", \"芰\", \"整\", \"慙\", \"飛\", \"甓\", \"岩\", \"鸦\", \"黎\", \"僊\", \"糁\", \"谈\", \"洋\",\n                                  \"椑\", \"健\", \"〕\",\n                                  \"內\", \"言\",\n                                  \"掷\", \"倚\", \"姬\", \"矿\", \"灯\", \"阐\", \"凋\", \"銮\", \"豇\", \"瑰\", \"抓\", \"噪\", \"堋\", \"吁\",\n                                  \"妈\", \"庥\", \"彳\",\n                                  \"鄗\", \"闩\",\n                                  \"夫\", \"０\", \"庠\", \"悬\", \"妙\", \"琵\", \"着\", \"首\", \"熣\", \"瞰\", \"揆\", \"燚\", \"条\", \"姜\",\n                                  \"滘\", \"麓\", \"鳉\",\n                                  \"椀\", \"蓿\",\n                                  \"廠\", \"泌\", \"蝈\", \"倕\", \"丛\", \"耍\", \"且\", \"蝇\", \"凉\", \"豐\", \"泪\", \"臼\", \"服\", \"刍\",\n                                  \"織\", \"渎\", \"尥\",\n                                  \"甙\", \"埋\",\n                                  \"珏\", \"援\", \"祖\", \"彊\", \"臱\", \"惦\", \"葴\", \"礁\", \"达\", \"橋\", \"钨\", \"崦\", \"醐\", \"巳\",\n                                  \"中\", \"颜\", \"溠\",\n                                  \"铹\", \"负\",\n                                  \"抠\", \"愎\", \"罘\", \"雩\", \"胝\", \"冱\", \"筵\", \"篙\", \"材\", \"肓\", \"○\", \"迅\", \"腼\", \"橙\",\n                                  \"仵\", \"茏\", \"慵\",\n                                  \"齌\", \"琯\",\n                                  \"疃\", \"貢\", \"豉\", \"瞟\", \"忉\", \"禄\", \"通\", \"咒\", \"愫\", \"秕\", \"筜\", \"觖\", \"州\", \"渑\",\n                                  \"胆\", \"喑\", \"張\",\n                                  \"衖\", \"洺\",\n                                  \"眉\", \"榞\", \"色\", \"邶\", \"攫\", \"堑\", \"淬\", \"嗪\", \"肐\", \"殣\", \"辊\", \"隧\", \"献\", \"潤\",\n                                  \"蓺\", \"函\", \"鹱\",\n                                  \"轭\", \"劭\",\n                                  \"椁\", \"膜\", \"亹\", \"侧\", \"貂\", \"哚\", \"磴\", \"蠋\", \"囔\", \"险\", \"伶\", \"世\", \"菥\", \"莶\",\n                                  \"瘾\", \"燫\", \"延\",\n                                  \"∵\", \"毋\",\n                                  \"羧\", \"无\", \"雎\", \"曛\", \"沚\", \"巍\", \"g\", \"熄\", \"恰\", \"伷\", \"開\", \"冻\", \"颛\", \"支\",\n                                  \"⑦\", \"鞥\", \"赖\",\n                                  \"试\", \"泮\",\n                                  \"联\", \"沮\", \"穰\", \"è\", \"峻\", \"滿\", \"豊\", \"刎\", \"鴈\", \"覆\", \"串\", \"锃\", \"春\", \"储\",\n                                  \"矍\", \"哺\", \"评\",\n                                  \"猁\", \"愉\",\n                                  \"疳\", \"閃\", \"奄\", \"甲\", \"墦\", \"頭\", \"锫\", \"俦\", \"玩\", \"搀\", \"砭\", \"流\", \"橇\", \"泅\",\n                                  \"琇\", \"趣\", \"∧\",\n                                  \"辑\", \"灊\",\n                                  \"貴\", \"迮\", \"摹\", \"霄\", \"濟\", \"限\", \"彀\", \"匪\", \"缂\", \"觚\", \"奇\", \"诋\", \"灼\", \"萘\",\n                                  \"狠\", \"澥\", \"岂\",\n                                  \"悺\", \"闾\",\n                                  \"麋\", \"号\", \"槽\", \"姹\", \"陉\", \"瑯\", \"尉\", \"h\", \"绖\", \"宿\", \"戋\", \"粝\", \"砂\", \"该\",\n                                  \"鞧\", \"翯\", \"釘\",\n                                  \"铢\", \"窨\",\n                                  \"設\", \"⒆\"]\n    \n    def _get_beta_charset(self) -> List[str]:\n        \"\"\"获取beta版字符集\"\"\"\n        # 这里是beta版的字符集\n        return [\"\", \"笤\", \"谴\", \"膀\", \"荔\", \"佰\", \"电\", \"臁\", \"矍\", \"同\", \"奇\", \"芄\", \"吠\", \"6\",\n                                  \"曛\", \"荇\", \"砥\", \"蹅\", \"晃\", \"厄\", \"殣\", \"ｃ\", \"辱\", \"钋\", \"杻\", \"價\", \"眙\", \"鴿\",\n                                  \"⒄\", \"裙\",\n                                  \"训\", \"涛\", \"酉\", \"挞\", \"忙\", \"怍\", \"︰\", \"镍\", \"檐\", \"眯\", \"茓\", \"辖\", \"淩\", \"啟\",\n                                  \"蜀\", \"芟\",\n                                  \"裟\", \"楝\", \"彘\", \"嶪\", \"费\", \"亞\", \"滁\", \"榉\", \"朝\", \"f\", \"倻\", \"裎\", \"谧\", \"崂\",\n                                  \"卑\", \"助\",\n                                  \"触\", \"氐\", \"锟\", \"铢\", \"膪\", \"脐\", \"渲\", \"荫\", \"佾\", \"琯\", \"钣\", \"珰\", \"翦\", \"膻\",\n                                  \"娥\", \"浥\",\n                                  \"淄\", \"猸\", \"内\", \"消\", \"粞\", \"反\", \"苪\", \"冽\", \"酵\", \"玩\", \"父\", \"存\", \"屯\", \"殷\",\n                                  \"俐\", \"篱\",\n                                  \"俛\", \"塮\", \"苕\", \"耲\", \"输\", \"壖\", \"溶\", \"琤\", \"氏\", \"真\", \"黩\", \"瑄\", \"阶\", \"茔\",\n                                  \"眩\", \"浙\",\n                                  \"痄\", \"噔\", \"烤\", \"楯\", \"²\", \"铆\", \"裈\", \"偬\", \"盏\", \"祐\", \"伯\", \"庙\", \"獯\", \"榀\",\n                                  \"裒\", \"综\",\n                                  \"蒸\", \"架\", \"蜱\", \"鹖\", \"涴\", \"肌\", \"廖\", \"祾\", \"蔗\", \"破\", \"!\", \"鑫\", \"瓷\", \"Ｈ\",\n                                  \"宛\", \"倪\",\n                                  \"贝\", \"酝\", \"倞\", \"榼\", \"菊\", \"帕\", \"胍\", \"淌\", \"抨\", \"倕\", \"味\", \"独\", \"à\", \"庐\",\n                                  \"蹲\", \"肸\",\n                                  \"洹\", \"騳\", \"绖\", \"觉\", \"蝙\", \"铜\", \"選\", \"郚\", \"奄\", \"手\", \"篦\", \"忮\", \"潺\", \"歁\",\n                                  \"湖\", \"貔\",\n                                  \"缚\", \"癫\", \"捣\", \"翎\", \"勇\", \"徒\", \"杪\", \"捃\", \"纴\", \"郞\", \"蛱\", \"浓\", \"講\", \"薇\",\n                                  \"汊\", \"彻\",\n                                  \"琖\", \"觇\", \"驩\", \"野\", \"闺\", \"彩\", \"膊\", \"簸\", \"瑭\", \"龏\", \"栓\", \"攸\", \"堕\", \"鹿\",\n                                  \"檠\", \"锽\",\n                                  \"晟\", \"煊\", \"衖\", \"p\", \"L\", \"侞\", \"吹\", \"岵\", \"捡\", \"邃\", \"曩\", \"泼\", \"娌\", \"磙\",\n                                  \"鞮\", \"號\",\n                                  \"苤\", \"骁\", \"感\", \"氙\", \"榜\", \"菟\", \"蠲\", \"∶\", \"焌\", \"漯\", \"胪\", \"以\", \"剜\", \"=\",\n                                  \"衰\", \"剔\",\n                                  \"疏\", \"韩\", \"邋\", \"探\", \"搌\", \"握\", \"舵\", \"腰\", \"咐\", \"郎\", \"鈺\", \"赴\", \"斩\", \"铥\",\n                                  \"棂\", \"褫\",\n                                  \"秾\", \"城\", \"葬\", \"缺\", \"甓\", \"沙\", \"鴨\", \"恧\", \"吩\", \"膈\", \"俗\", \"引\", \"濑\", \"坛\",\n                                  \"蛘\", \"谍\",\n                                  \"飘\", \"鎚\", \"貋\", \"袅\", \"圃\", \"肽\", \"祖\", \"瑢\", \"鄣\", \"卡\", \"恸\", \"饷\", \"撖\", \"阖\",\n                                  \"碌\", \"墉\",\n                                  \"⇋\", \"抗\", \"僇\", \"撩\", \"狷\", \"静\", \"荽\", \"憯\", \"虻\", \"滹\", \"簧\", \"Y\", \"汾\", \"嫁\",\n                                  \"蚴\", \"岈\",\n                                  \"榔\", \"邶\", \"挛\", \"火\", \"w\", \"旌\", \"線\", \"3\", \"跏\", \"F\", \"楸\", \"瞬\", \"證\", \"現\", \"符\",\n                                  \"鲀\",\n                                  \"窸\", \"朗\", \"m\", \"劉\", \"襄\", \"鸻\", \"敖\", \"憩\", \"濛\", \"胶\", \"雏\", \"禽\", \"缜\", \"鐀\",\n                                  \"澄\", \"泉\",\n                                  \"懈\", \"鹟\", \"牙\", \"叟\", \"镖\", \"膨\", \"硷\", \"钏\", \"嵌\", \"冲\", \"橪\", \"厨\", \"溘\", \"妻\",\n                                  \"贺\", \"耀\",\n                                  \"潲\", \"瞳\", \"惺\", \"涑\", \"鄄\", \"舡\", \"战\", \"钹\", \"盍\", \"窀\", \"凳\", \"锋\", \"（\", \"绤\",\n                                  \"翻\", \"》\",\n                                  \"嶷\", \"戛\", \"照\", \"设\", \"两\", \"霹\", \"風\", \"格\", \"栖\", \"椹\", \"№\", \"蔌\", \"达\", \"悠\",\n                                  \"旒\", \"函\",\n                                  \"抔\", \"逆\", \"疙\", \"玫\", \"箢\", \"恩\", \"樘\", \"远\", \"考\", \"荭\", \"殒\", \"靡\", \"蝾\", \"舅\",\n                                  \"䀲\", \"偾\",\n                                  \"灿\", \"埴\", \"瀍\", \"特\", \"诸\", \"搦\", \"恒\", \"妊\", \"课\", \"劂\", \"殊\", \"艋\", \"柚\", \"硕\",\n                                  \"捅\", \"钍\",\n                                  \"芘\", \"脖\", \"襁\", \"募\", \"卅\", \"疆\", \"嫖\", \"黹\", \"臀\", \"豇\", \"瘗\", \"憎\", \"嗯\", \"Θ\",\n                                  \"跺\", \"喧\",\n                                  \"捺\", \"爪\", \"鲠\", \"縠\", \"屋\", \"撑\", \"者\", \"娶\", \"喝\", \"墼\", \"丶\", \"茚\", \"髅\", \"瓢\",\n                                  \"农\", \"橼\",\n                                  \"攰\", \"折\", \"诋\", \"镒\", \"赂\", \"捲\", \"耑\", \"沐\", \"窜\", \"亰\", \"煌\", \"阕\", \"羯\", \"纤\",\n                                  \"滇\", \"值\",\n                                  \"琥\", \"渴\", \"祗\", \"鳌\", \"蛞\", \"庄\", \"鹇\", \"訄\", \"犷\", \"弋\", \"琐\", \"佗\", \"氛\", \"揄\",\n                                  \"旺\", \"聱\",\n                                  \"榨\", \"湿\", \"蟥\", \"湎\", \"敕\", \"轷\", \"耿\", \"三\", \"運\", \"瑶\", \"困\", \"勁\", \"蚱\", \"泸\",\n                                  \"螫\", \"斜\",\n                                  \"蟠\", \"轨\", \"镞\", \"霆\", \"嶙\", \"烷\", \"瘩\", \"敦\", \"塾\", \"僚\", \"澙\", \"關\", \"酩\", \"殴\",\n                                  \"—\", \"例\",\n                                  \"筷\", \"乘\", \"颗\", \"核\", \"孬\", \"舣\", \"糇\", \"劾\", \"黧\", \"镌\", \"罅\", \"X\", \"仅\", \"哐\",\n                                  \"蟊\", \"呻\",\n                                  \"呕\", \"粟\", \"配\", \"伊\", \"槊\", \"昌\", \"宰\", \"盘\", \"肫\", \"鳥\", \"圾\", \"恬\", \"辘\", \"绿\",\n                                  \"時\", \"丐\",\n                                  \"扃\", \"敓\", \"摄\", \"陕\", \"滿\", \"鹆\", \"嗬\", \"龅\", \"渣\", \"釣\", \"萦\", \"督\", \"孑\", \"∧\",\n                                  \"疥\", \"噱\",\n                                  \"蝎\", \"君\", \"笮\", \"泌\", \"镔\", \"称\", \"柘\", \"鬣\", \"罨\", \"潍\", \"垣\", \"顔\", \"褶\", \"礓\",\n                                  \"△\", \"骐\",\n                                  \"湍\", \"獾\", \"羖\", \"戾\", \"预\", \"祭\", \"鹨\", \"凤\", \"茕\", \"珏\", \"蛊\", \"毛\", \"枰\", \"鄭\",\n                                  \"娲\", \"丕\",\n                                  \"蜜\", \"纟\", \"蛹\", \"粮\", \"嚰\", \"嚓\", \"螨\", \"裰\", \"G\", \"集\", \"删\", \"郜\", \"舻\", \"嵛\",\n                                  \"鵰\", \"腊\",\n                                  \"峄\", \"脸\", \"鲺\", \"坢\", \"寞\", \"撰\", \"顸\", \"枋\", \"荠\", \"夡\", \"豆\", \"馆\", \"赭\", \"傎\",\n                                  \"淼\", \"镪\",\n                                  \"許\", \"礌\", \"带\", \"訂\", \"饧\", \"锜\", \"及\", \"漾\", \"編\", \"究\", \"仍\", \"糜\", \"喳\", \"嗝\",\n                                  \"醦\", \"堅\",\n                                  \"企\", \"烔\", \"图\", \"垲\", \"枥\", \"畿\", \"踱\", \"槟\", \"◆\", \"酽\", \"溢\", \"酥\", \"谚\", \"缨\",\n                                  \"死\", \"镑\",\n                                  \"干\", \"用\", \"紊\", \"坑\", \"副\", \"枭\", \"琮\", \"鸨\", \"獻\", \"弈\", \"伺\", \"醍\", \"氓\", \"宁\",\n                                  \"臻\", \"贾\",\n                                  \"啐\", \"玉\", \"咀\", \"孀\", \"烆\", \"嘱\", \"频\", \"蜥\", \"楡\", \"瞩\", \"委\", \"锺\", \"赀\", \"睬\",\n                                  \"旅\", \"刿\",\n                                  \"韪\", \"抹\", \"鞘\", \"x\", \"钝\", \"倌\", \"奖\", \"蟭\", \"灌\", \"肼\", \"曰\", \"啊\", \"属\", \"唐\",\n                                  \"彦\", \"煦\",\n                                  \"鄘\", \"坦\", \"鬻\", \"告\", \"单\", \"菽\", \"匏\", \"浚\", \"仺\", \"怜\", \"拦\", \"鸡\", \"拄\", \"乍\",\n                                  \"燠\", \"暧\",\n                                  \"竭\", \"⒂\", \"济\", \"Ⓡ\", \"趑\", \"舴\", \"体\", \"拒\", \"罂\", \"说\", \"猎\", \"闫\", \"鄗\", \"妲\",\n                                  \"鑙\", \"葶\",\n                                  \"匍\", \"等\", \"略\", \"盲\", \"唔\", \"钰\", \"渠\", \"镦\", \"葫\", \"蹒\", \"姘\", \"婵\", \"夯\", \"实\",\n                                  \"何\", \"株\",\n                                  \"锌\", \"礁\", \"桺\", \"捉\", \"鮕\", \"莓\", \"轶\", \"辉\", \"溋\", \"视\", \"嗒\", \"猞\", \"猁\", \"杓\",\n                                  \"怡\", \"咴\",\n                                  \"巷\", \"仂\", \"婉\", \"睛\", \"？\", \"淡\", \"/\", \"郛\", \"绨\", \"较\", \"毁\", \"沓\", \"瞎\", \"馏\",\n                                  \"蕙\", \"戏\",\n                                  \"i\", \"董\", \"臣\", \"鹫\", \"栳\", \"锹\", \"裕\", \"蜷\", \"唣\", \"９\", \"缂\", \"螬\", \"笥\", \"惶\",\n                                  \"蚰\", \"徨\",\n                                  \"忭\", \"传\", \"绛\", \"离\", \"锑\", \"候\", \"拓\", \"德\", \"损\", \"附\", \"紡\", \"徕\", \"錾\", \"蕻\",\n                                  \"⑧\", \"構\",\n                                  \"镊\", \"脘\", \"靸\", \"涒\", \"镡\", \"光\", \"廒\", \"尴\", \"荥\", \"佳\", \"弼\", \"暮\", \"榆\", \"鼑\",\n                                  \"辅\", \"钆\",\n                                  \"湝\", \"佤\", \"瘌\", \"炽\", \"筰\", \"嗈\", \"電\", \"飙\", \"坶\", \"椿\", \"俾\", \"灊\", \"泵\", \"像\",\n                                  \"咅\", \"樓\",\n                                  \"苒\", \"烨\", \"溺\", \"棽\", \"戒\", \"箅\", \"愔\", \"缢\", \"楞\", \"庤\", \"塑\", \"湮\", \"沽\", \"蝌\",\n                                  \"赌\", \"薨\",\n                                  \"锾\", \"圜\", \"骥\", \"秉\", \"瞌\", \"惇\", \"诊\", \"圣\", \"睢\", \"我\", \"廰\", \"苠\", \"襻\", \"鲚\",\n                                  \"酮\", \"厮\",\n                                  \"评\", \"沈\", \"愀\", \"垞\", \"习\", \"敷\", \"比\", \"欢\", \"尚\", \"钪\", \"卣\", \"她\", \",\", \"伴\",\n                                  \"赃\", \"蚬\",\n                                  \"喇\", \"醇\", \"嚅\", \"T\", \"姝\", \"鍊\", \"悯\", \"N\", \"抚\", \"颡\", \"獐\", \"趟\", \"洑\", \"缝\",\n                                  \"喁\", \"帷\",\n                                  \"憷\", \"获\", \"阉\", \"镫\", \"臨\", \"炮\", \"奴\", \"揩\", \"叩\", \"恺\", \"粱\", \"胁\", \"憬\", \"痿\",\n                                  \"´\", \"沘\",\n                                  \"彀\", \"饩\", \"滋\", \"竑\", \"嗑\", \"鸟\", \"Ｔ\", \"璠\", \"快\", \"銀\", \"舶\", \"羞\", \"桞\", \"飛\",\n                                  \"茹\", \"師\",\n                                  \"偌\", \"節\", \"冁\", \"叡\", \"臑\", \"踔\", \"酔\", \"養\", \"溦\", \"岐\", \"豉\", \"杌\", \"胩\", \"仳\",\n                                  \"沾\", \"窑\",\n                                  \"曳\", \"闷\", \"垢\", \"垆\", \"磨\", \"髹\", \"態\", \"丽\", \"見\", \"洃\", \"遣\", \"场\", \"铭\", \"溉\",\n                                  \"衬\", \"橦\",\n                                  \"详\", \"馊\", \"濂\", \"瑾\", \"鲫\", \"贞\", \"搴\", \"胺\", \" \", \"景\", \"执\", \"袴\", \"炖\", \"箭\",\n                                  \"楂\", \"婚\",\n                                  \"镧\", \"厩\", \"宣\", \"缣\", \"跃\", \"痘\", \"亓\", \"宦\", \"豪\", \"侣\", \"郧\", \"與\", \"痳\", \"挚\",\n                                  \"殻\", \"嘢\",\n                                  \"洽\", \"蹉\", \"孽\", \"森\", \"俚\", \"八\", \"砹\", \"凹\", \"訇\", \"屹\", \"啰\", \"宴\", \"廨\", \"沇\",\n                                  \"麇\", \"泅\",\n                                  \"绡\", \"辛\", \"鹲\", \"鋆\", \"旮\", \"婀\", \"幔\", \"赞\", \"：\", \"永\", \"活\", \"萸\", \"霉\", \"←\",\n                                  \"媲\", \"阚\",\n                                  \"鲮\", \"佝\", \"獒\", \"圹\", \"隋\", \"征\", \"蚶\", \"龊\", \"搀\", \"嫫\", \"鬏\", \"幞\", \"學\", \"然\",\n                                  \"沧\", \"萑\",\n                                  \"襜\", \"撻\", \"苯\", \"狳\", \"鞠\", \"咋\", \"壹\", \"栅\", \"款\", \"镘\", \"阳\", \"蚜\", \"荬\", \"糊\",\n                                  \"疳\", \"糕\",\n                                  \"镵\", \"寐\", \"褴\", \"v\", \"醋\", \"诀\", \"汰\", \"啸\", \"备\", \"娘\", \"氚\", \"镓\", \"室\", \"簟\",\n                                  \"硝\", \"嘌\",\n                                  \"釐\", \"争\", \"男\", \"疬\", \"鹄\", \"艳\", \"倒\", \"忸\", \"庶\", \"葒\", \"岖\", \"涨\", \"羝\", \"诼\",\n                                  \"纨\", \"纰\",\n                                  \"扉\", \"酎\", \"藉\", \"疮\", \"枞\", \"黜\", \"戮\", \"芽\", \"鳑\", \"末\", \"蒿\", \"茈\", \"透\", \"渊\",\n                                  \"秷\", \"〈\",\n                                  \"试\", \"络\", \"羼\", \"滪\", \"奋\", \"虏\", \"脁\", \"沫\", \"蓰\", \"襆\", \"披\", \"鲌\", \"艚\", \"逹\",\n                                  \"炳\", \"泔\",\n                                  \"叹\", \"轳\", \"锵\", \"嫜\", \"佥\", \"严\", \"迅\", \"筠\", \"逵\", \"铿\", \"钇\", \"拇\", \"诏\", \"绯\",\n                                  \"吊\", \"纠\",\n                                  \"蟾\", \"c\", \"涝\", \"汩\", \"盐\", \"跋\", \"拤\", \"邹\", \"镨\", \"羚\", \"龆\", \"脊\", \"攉\", \"傕\",\n                                  \"短\", \"團\",\n                                  \"蹬\", \"嘤\", \"奎\", \"熨\", \"芪\", \"鸢\", \"濉\", \"''\", \"莴\", \"義\", \"赜\", \"踺\", \"皂\", \"努\",\n                                  \"偏\", \"狡\",\n                                  \"遭\", \"吞\", \"嘿\", \"婊\", \"媸\", \"增\", \"殿\", \"刮\", \"燘\", \"劫\", \"娜\", \"瞄\", \"寡\", \"优\",\n                                  \"捋\", \"佴\",\n                                  \"菰\", \"蓠\", \"笙\", \"镃\", \"樇\", \"瘫\", \"B\", \"橇\", \"逯\", \"堍\", \"О\", \"磐\", \"腼\", \"て\",\n                                  \"送\", \"狭\",\n                                  \"皓\", \"亡\", \"嗉\", \"菠\", \"顺\", \"連\", \"嶶\", \"瑪\", \"辟\", \"婷\", \"牛\", \"笫\", \"窅\", \"萁\",\n                                  \"戟\", \"覃\",\n                                  \"馍\", \"建\", \"謇\", \"旘\", \"镣\", \"燏\", \"葉\", \"轺\", \"倏\", \"堪\", \"见\", \"葛\", \"钕\", \"键\",\n                                  \"押\", \"僊\",\n                                  \"槐\", \"戎\", \"窨\", \"洙\", \"鲢\", \"鞒\", \"慒\", \"雁\", \"圭\", \"Ｄ\", \"陌\", \"肱\", \"蜿\", \"洧\",\n                                  \"惑\", \"祛\",\n                                  \"樟\", \"矧\", \"呵\", \"峻\", \"凝\", \"蕨\", \"拯\", \"珮\", \"塥\", \"展\", \"贻\", \"囐\", \"弱\", \"庳\",\n                                  \"嫔\", \"緣\",\n                                  \"呈\", \"策\", \"漉\", \"瑗\", \"鲂\", \"鹂\", \"吾\", \"灶\", \"并\", \"挲\", \"重\", \"奭\", \"皙\", \"侪\",\n                                  \"埗\", \"烬\",\n                                  \"纾\", \"椒\", \"技\", \"ɔ\", \"擀\", \"恍\", \"遨\", \"订\", \"雨\", \"卵\", \"锏\", \"猗\", \"癸\", \"）\",\n                                  \"谡\", \"稷\",\n                                  \"枨\", \"蹽\", \"荑\", \"沅\", \"稽\", \"間\", \"冉\", \"颇\", \"酺\", \"份\", \"瞾\", \"毯\", \"藥\", \"蕞\",\n                                  \"狲\", \"吡\",\n                                  \"慷\", \"卯\", \"摽\", \"肿\", \"嗛\", \"悒\", \"丨\", \"横\", \"鳡\", \"仫\", \"狎\", \"砗\", \"聿\", \"腥\",\n                                  \"酡\", \"飱\",\n                                  \"柳\", \"遽\", \"汇\", \"湔\", \"麋\", \"垃\", \"粽\", \"坷\", \"鳗\", \"迫\", \"丢\", \"\\\"\", \"⒀\", \"嗲\",\n                                  \"肐\", \"結\",\n                                  \"署\", \"飨\", \"蠡\", \"涩\", \"挈\", \"浿\", \"鐾\", \"姞\", \"隧\", \"铘\", \"呜\", \"蜕\", \"鷄\", \"逼\",\n                                  \"哌\", \"病\",\n                                  \"係\", \"偿\", \"Ⅲ\", \"埋\", \"妤\", \"赘\", \"悉\", \"陷\", \"沸\", \"呲\", \"誓\", \"舆\", \"髀\", \"挫\",\n                                  \"羑\", \"据\",\n                                  \"顿\", \"淝\", \"抟\", \"珧\", \"郑\", \"仗\", \"怛\", \"掠\", \"稳\", \"尥\", \"祙\", \"找\", \"郐\", \"锔\",\n                                  \"轹\", \"钓\",\n                                  \"黙\", \"饸\", \"谌\", \"斐\", \"龙\", \"噫\", \"駆\", \"浼\", \"峒\", \"育\", \"纣\", \"溠\", \"铊\", \"亨\",\n                                  \"杮\", \"呓\",\n                                  \"钌\", \"业\", \"繻\", \"溪\", \"戌\", \"蓿\", \"椱\", \"悱\", \"仉\", \"阮\", \"芈\", \"濋\", \"搔\", \"纽\",\n                                  \"琛\", \"趄\",\n                                  \"双\", \"镯\", \"☆\", \"敉\", \"啬\", \"讦\", \"娱\", \"爾\", \"遶\", \"漱\", \"郗\", \"锪\", \"颃\", \"靰\",\n                                  \"醊\", \"驊\",\n                                  \"呢\", \"術\", \"妙\", \"蚣\", \"溽\", \"酇\", \"巾\", \"舐\", \"却\", \"废\", \"邾\", \"砣\", \"乙\", \"鲜\",\n                                  \"蒤\", \"囍\",\n                                  \"璈\", \"稔\", \"蘘\", \"匐\", \"業\", \"碟\", \"渺\", \"贤\", \"绋\", \"畑\", \"颞\", \"侥\", \"盟\", \"鼍\",\n                                  \"阊\", \"蔽\",\n                                  \"标\", \"吮\", \"淬\", \"鏾\", \"圗\", \"夜\", \"乕\", \"娇\", \"瞿\", \"循\", \"讲\", \"懒\", \"熘\", \"禚\",\n                                  \"观\", \"钷\",\n                                  \"万\", \"n\", \"未\", \"藝\", \"愿\", \"圈\", \"浩\", \"伦\", \"扛\", \"暄\", \"饶\", \"梧\", \"欣\", \"咿\",\n                                  \"檔\", \"吼\",\n                                  \"妮\", \"覆\", \"辰\", \"誤\", \"允\", \"危\", \"硗\", \"惫\", \"瘪\", \"李\", \"焱\", \"沣\", \"坯\", \"穄\",\n                                  \"归\", \"画\",\n                                  \"营\", \":\", \"色\", \"哔\", \"矢\", \"巯\", \"祆\", \"傍\", \"享\", \"悻\", \"取\", \"凫\", \"铒\", \"唅\",\n                                  \"眈\", \"疹\",\n                                  \"败\", \"晴\", \"顼\", \"绶\", \"剃\", \"斗\", \"禾\", \"４\", \"誜\", \"俨\", \"２\", \"患\", \"结\", \"可\",\n                                  \"帇\", \"抍\",\n                                  \"筝\", \"衢\", \"鹛\", \"跸\", \"颢\", \"钾\", \"渡\", \"棒\", \"丛\", \"皱\", \"梓\", \"将\", \"压\", \"#\",\n                                  \"岛\", \"?\",\n                                  \"砺\", \"过\", \"党\", \"挣\", \"瞋\", \"谶\", \"妯\", \"羡\", \"化\", \"淫\", \"歪\", \"鼗\", \"阄\", \"蔓\",\n                                  \"烩\", \"餘\",\n                                  \"猊\", \"．\", \"畯\", \"祧\", \"狒\", \"碁\", \"咛\", \"鲈\", \"叨\", \"哞\", \"５\", \"娈\", \"半\", \"免\",\n                                  \"拿\", \"畎\",\n                                  \"媾\", \"棚\", \"丈\", \"周\", \"匋\", \"酯\", \"奚\", \"爇\", \"摇\", \"搭\", \"蓇\", \"陽\", \"岢\", \"禤\",\n                                  \"藠\", \"雅\",\n                                  \"哲\", \"弹\", \"按\", \"↑\", \"蹀\", \"察\", \"螾\", \"渎\", \"褂\", \"觳\", \"耍\", \"皲\", \"骗\", \"箫\",\n                                  \"蕺\", \"亚\",\n                                  \"保\", \"棵\", \"放\", \"踪\", \"了\", \"熣\", \"亦\", \"痛\", \"币\", \"馐\", \"夢\", \"诱\", \"梱\", \"鲰\",\n                                  \"郕\", \"璜\",\n                                  \"祯\", \"颦\", \"走\", \"踣\", \"嫚\", \"旯\", \"雲\", \"湟\", \"墨\", \"笃\", \"肇\", \"撝\", \"腦\", \"账\",\n                                  \"舞\", \"⑨\",\n                                  \"噻\", \"幂\", \"僵\", \"崦\", \"’\", \"牢\", \"号\", \"嫡\", \"囱\", \"肥\", \"代\", \"锶\", \"掏\", \"随\",\n                                  \"棓\", \"殉\",\n                                  \"嘅\", \"掰\", \"功\", \"垛\", \"踶\", \"娠\", \"霜\", \"碣\", \"鲼\", \"伉\", \"凄\", \"骋\", \"鹞\", \"洺\",\n                                  \"乌\", \"赧\",\n                                  \"瑛\", \"黎\", \"曚\", \"鲴\", \"髫\", \"瘴\", \"藏\", \"雍\", \"畐\", \"蔻\", \"爼\", \"蹴\", \"巨\", \"贱\",\n                                  \"汜\", \"胡\",\n                                  \"虬\", \"椎\", \"逸\", \"魇\", \"亶\", \"Φ\", \"忆\", \"赉\", \"塞\", \"潢\", \"垌\", \"简\", \"鼹\", \"發\",\n                                  \"枢\", \"麝\",\n                                  \"虹\", \"惭\", \"唛\", \"春\", \"瑟\", \"郰\", \"桡\", \"捩\", \"堙\", \"嗨\", \"驳\", \"Ｆ\", \"荪\", \"忑\",\n                                  \"贪\", \"躅\",\n                                  \"步\", \"揜\", \"闪\", \"垟\", \"晶\", \"分\", \"韭\", \"戴\", \"泪\", \"啧\", \"機\", \"峙\", \"和\", \"鸱\",\n                                  \"绎\", \"屠\",\n                                  \"阋\", \"黍\", \"淸\", \"萩\", \"汉\", \"吐\", \"匙\", \"铗\", \"蠔\", \"簠\", \"鲵\", \"须\", \"蛣\", \"躏\",\n                                  \"完\", \"咻\",\n                                  \"釜\", \"馼\", \"崤\", \"欻\", \"珐\", \"于\", \"郅\", \"焓\", \"轴\", \"递\", \"堰\", \"嗷\", \"儇\", \"壕\",\n                                  \"嘟\", \"酸\",\n                                  \"庾\", \"龂\", \"妍\", \"锅\", \"雳\", \"桦\", \"抬\", \"谄\", \"气\", \"六\", \"诎\", \"绀\", \"张\", \"復\",\n                                  \"客\", \"荞\",\n                                  \"鳚\", \"衔\", \"亁\", \"昂\", \"漤\", \"鞚\", \"筘\", \"绫\", \"彝\", \"枪\", \"苊\", \"榟\", \"饺\", \"苦\",\n                                  \"顶\", \"衷\",\n                                  \"聚\", \"寮\", \"揆\", \"轪\", \"栋\", \"臂\", \"葖\", \"颋\", \"镐\", \"愕\", \"贸\", \"Q\", \"琼\", \"糥\",\n                                  \"世\", \"莪\",\n                                  \"龁\", \"禁\", \"绲\", \"陶\", \"弑\", \"黢\", \"铵\", \"睐\", \"沄\", \"紬\", \"防\", \"癣\", \"曾\", \"钉\",\n                                  \"纶\", \"膘\",\n                                  \"句\", \"莸\", \"踝\", \"躐\", \"酤\", \"腑\", \"雄\", \"堤\", \"喀\", \"姣\", \"孢\", \"阡\", \"褐\", \"胂\",\n                                  \"髙\", \";\",\n                                  \"骖\", \"膺\", \"糙\", \"辢\", \"⒃\", \"险\", \"砻\", \"缫\", \"骎\", \"低\", \"蚵\", \"箐\", \"苞\", \"劭\",\n                                  \"峪\", \"工\",\n                                  \"盈\", \"腹\", \"袄\", \"祉\", \"癔\", \"笨\", \"Ｒ\", \"乚\", \"畏\", \"虍\", \"臾\", \"泛\", \"噙\", \"杷\",\n                                  \"麗\", \"蹋\",\n                                  \"逍\", \"迓\", \"摅\", \"页\", \"戥\", \"胞\", \"艄\", \"壅\", \"啶\", \"趼\", \"牟\", \"翙\", \"蓝\", \"府\",\n                                  \"轿\", \"砼\",\n                                  \"荜\", \"杆\", \"惊\", \"起\", \"瘅\", \"墈\", \"氖\", \"匀\", \"麃\", \"阘\", \"虮\", \"蘇\", \"蚤\", \"汗\",\n                                  \"鳞\", \"籁\",\n                                  \"缲\", \"畈\", \"亟\", \"劬\", \"課\", \"蓄\", \"缅\", \"楮\", \"湜\", \"珩\", \"斋\", \"塬\", \"殁\", \"魃\",\n                                  \"脞\", \"H\",\n                                  \"澼\", \"钚\", \"饕\", \"缕\", \"Ⅱ\", \"攮\", \"卿\", \"莅\", \"镆\", \"熹\", \"藩\", \"汁\", \"順\", \"趿\",\n                                  \"拆\", \"蟹\",\n                                  \"砒\", \"惴\", \"㎡\", \"忖\", \"寝\", \"戕\", \"螭\", \"酿\", \"™\", \"柬\", \"枧\", \"凶\", \"蚁\", \"島\",\n                                  \"殄\", \"鲊\",\n                                  \"忠\", \"肉\", \"辕\", \"叫\", \"徙\", \"漆\", \"缞\", \"夀\", \"楦\", \"佪\", \"兴\", \"粉\", \"裳\", \"蘧\",\n                                  \"國\", \"旬\",\n                                  \"看\", \"Ⅰ\", \"剑\", \"痭\", \"襟\", \"恐\", \"遹\", \"◎\", \"窃\", \"穰\", \"澎\", \"敬\", \"旱\", \"燚\",\n                                  \"坩\", \"彤\",\n                                  \"尜\", \"猃\", \"夏\", \"穈\", \"媒\", \"柑\", \"駡\", \"孛\", \"脉\", \"车\", \"零\", \"菩\", \"痊\", \"卉\",\n                                  \"桔\", \"距\",\n                                  \"吧\", \"漦\", \"启\", \"仁\", \"滬\", \"馋\", \"帅\", \"鳈\", \"鄌\", \"超\", \"芡\", \"窘\", \"刽\", \"掌\",\n                                  \"氤\", \"梽\",\n                                  \"拎\", \"踏\", \"勋\", \"甍\", \"玑\", \"稱\", \"鞍\", \"浍\", \"翅\", \"饟\", \"鼎\", \"罩\", \"加\", \"虚\",\n                                  \"蕰\", \"簉\",\n                                  \"堇\", \"巢\", \"疲\", \"蟑\", \"狝\", \"瓮\", \"潋\", \"行\", \"饥\", \"散\", \"糌\", \"牵\", \"貢\", \"偉\",\n                                  \"咄\", \"痕\",\n                                  \"沃\", \"苓\", \"锂\", \"狻\", \"褿\", \"畸\", \"姿\", \"煎\", \"胜\", \"觅\", \"烊\", \"質\", \"疵\", \"擢\",\n                                  \"椤\", \"米\",\n                                  \"累\", \"诳\", \"斡\", \"K\", \"恻\", \"匦\", \"烫\", \"湾\", \"鹎\", \"吟\", \"摘\", \"涞\", \"恿\", \"嫉\",\n                                  \"炎\", \"婧\",\n                                  \"朽\", \"铑\", \"ㆍ\", \"讧\", \"曜\", \"挑\", \"〇\", \"搅\", \"鹐\", \"丁\", \"彼\", \"棠\", \"饪\", \"箬\",\n                                  \"祎\", \"魄\",\n                                  \"囿\", \"犬\", \"市\", \"髃\", \"勚\", \"桶\", \"辎\", \"瓞\", \"财\", \"缄\", \"園\", \"睒\", \"护\", \"尿\",\n                                  \"融\", \"围\",\n                                  \"水\", \"糍\", \"虢\", \"呦\", \"越\", \"棺\", \"砮\", \"邓\", \"鹦\", \"稣\", \"呃\", \"柙\", \"鎌\", \"转\",\n                                  \"袋\", \"湉\",\n                                  \"亘\", \"俩\", \"腆\", \"谣\", \"飔\", \"撂\", \"鄳\", \"爲\", \"盦\", \"谳\", \"卸\", \"W\", \"嚆\", \"婕\",\n                                  \"卫\", \"拚\",\n                                  \"呀\", \"汽\", \"洣\", \"冻\", \"鳝\", \"录\", \"毋\", \"閥\", \"熬\", \"谜\", \"齐\", \"匳\", \"慧\", \"猴\",\n                                  \"撬\", \"妳\",\n                                  \"諾\", \"蠼\", \"瘟\", \"伐\", \"颤\", \"奶\", \"陧\", \"麾\", \"岌\", \"浇\", \"邸\", \"「\", \"不\", \"哼\",\n                                  \"热\", \"旳\",\n                                  \"慙\", \"＆\", \"苔\", \"郿\", \"钗\", \"氡\", \"纹\", \"侬\", \"霓\", \"靈\", \"扁\", \"聢\", \"疼\", \"岣\",\n                                  \"甥\", \"恭\",\n                                  \"喷\", \"芫\", \"骂\", \"肪\", \"熥\", \"揠\", \"鲷\", \"遁\", \"霎\", \"娆\", \"圩\", \"爬\", \"傲\", \"贽\",\n                                  \"紫\", \"觑\",\n                                  \"琇\", \"蟆\", \"怙\", \"玙\", \"庼\", \"筮\", \"慗\", \"层\", \"娓\", \"蚨\", \"糟\", \"璩\", \"隼\", \"锧\",\n                                  \"疱\", \"铎\",\n                                  \"祠\", \"绁\", \"速\", \"湛\", \"蝮\", \"立\", \"媵\", \"禇\", \"撸\", \"禳\", \">\", \"恋\", \"⑥\", \"鹡\",\n                                  \"蓑\", \"樱\",\n                                  \"奸\", \"蝣\", \"埭\", \"聪\", \"慭\", \"睑\", \"肢\", \"焗\", \"骃\", \"毵\", \"潼\", \"塘\", \"烧\", \"劓\",\n                                  \"栾\", \"牯\",\n                                  \"〉\", \"毓\", \"釉\", \"庞\", \"宕\", \"磚\", \"夺\", \"畜\", \"俏\", \"筼\", \"虱\", \"釆\", \"计\", \"陀\",\n                                  \"诧\", \"臱\",\n                                  \"牌\", \"固\", \"鹉\", \"凰\", \"擞\", \"■\", \"㛃\", \"词\", \"店\", \"當\", \"许\", \"妣\", \"耋\", \"硼\",\n                                  \"根\", \"焅\",\n                                  \"砸\", \"霈\", \"锃\", \"巳\", \"誉\", \"咕\", \"锊\", \"P\", \"云\", \"乞\", \"为\", \"姆\", \"桕\", \"丞\",\n                                  \"鳤\", \"楷\",\n                                  \"醒\", \"趔\", \"怔\", \"砉\", \"潏\", \"肝\", \"拷\", \"也\", \"璐\", \"厘\", \"致\", \"昇\", \"绥\", \"抃\",\n                                  \"佩\", \"斥\",\n                                  \"⑶\", \"断\", \"纵\", \"翁\", \"耄\", \"沭\", \"洄\", \"别\", \"吻\", \"渍\", \"r\", \"愦\", \"替\", \"骓\",\n                                  \"攻\", \"旦\",\n                                  \"来\", \"案\", \"坫\", \"辞\", \"班\", \"锝\", \"拜\", \"掎\", \"穸\", \"笛\", \"痂\", \"笈\", \"鲶\", \"僻\",\n                                  \"依\", \"碎\",\n                                  \"蕤\", \"炕\", \"寥\", \"拔\", \"髑\", \"慨\", \"眺\", \"⑿\", \"珞\", \"歧\", \"湲\", \"錦\", \"拮\", \"哭\",\n                                  \"爰\", \"验\",\n                                  \"寸\", \"%\", \"口\", \"阔\", \"积\", \"篝\", \"狴\", \"殂\", \"痧\", \"绽\", \"搪\", \"祸\", \"缘\", \"遯\",\n                                  \"祜\", \"种\",\n                                  \"缓\", \"冒\", \"庵\", \"窥\", \"颂\", \"哕\", \"谘\", \"蜗\", \"掖\", \"驮\", \"郎\", \"跂\", \"蝓\", \"贲\",\n                                  \"馔\", \"琰\",\n                                  \"大\", \"芊\", \"粝\", \"啻\", \"蒉\", \"谒\", \"羔\", \"蘑\", \"菑\", \"布\", \"徂\", \"l\", \"炬\", \"蘩\",\n                                  \"弭\", \"嵎\",\n                                  \"補\", \"岑\", \"佯\", \"棍\", \"没\", \"志\", \"裣\", \"咸\", \"权\", \"豺\", \"韦\", \"優\", \"紧\", \"嚚\",\n                                  \"牴\", \"酚\",\n                                  \"沤\", \"睥\", \"葆\", \"乓\", \"划\", \"犒\", \"惚\", \"埕\", \"锴\", \"就\", \"滓\", \"汕\", \"冏\", \"缵\",\n                                  \"囟\", \"旸\",\n                                  \"麂\", \"接\", \"餮\", \"瓤\", \"偕\", \"灏\", \"溻\", \"揶\", \"钯\", \"荸\", \"宪\", \"泠\", \"槠\", \"抺\",\n                                  \"威\", \"燴\",\n                                  \"井\", \"骣\", \"耜\", \"磔\", \"懜\", \"淇\", \"瘘\", \"蹼\", \"觏\", \"圬\", \"纔\", \"恤\", \"铝\", \"薏\",\n                                  \"鞫\", \"衉\",\n                                  \"Ｅ\", \"球\", \"姽\", \"毹\", \"嵘\", \"睦\", \"蛉\", \"伽\", \"橥\", \"痤\", \"卞\", \"警\", \"则\", \"芬\",\n                                  \"磉\", \"悢\",\n                                  \"逾\", \"吆\", \"朿\", \"锒\", \"卧\", \"E\", \"焉\", \"纥\", \"髦\", \"鞯\", \"牞\", \"蹿\", \"琪\", \"洌\",\n                                  \"幛\", \"淳\",\n                                  \"菲\", \"涔\", \"噗\", \"勺\", \"势\", \"哓\", \"毪\", \"刖\", \"雜\", \"浪\", \"懵\", \"棁\", \"秋\", \"◇\",\n                                  \"玡\", \"埯\",\n                                  \"谥\", \"芑\", \"拌\", \"Ｚ\", \"埂\", \"寻\", \"虼\", \"豫\", \"蛄\", \"蜞\", \"椟\", \"〔\", \"哩\", \"絷\",\n                                  \"咱\", \"郈\",\n                                  \"湫\", \"抡\", \"矮\", \"庖\", \"锰\", \"鎖\", \"葸\", \"棣\", \"砑\", \"题\", \"棋\", \"晕\", \"兠\", \"蓣\",\n                                  \"貂\", \"裤\",\n                                  \"昊\", \"扳\", \"讴\", \"弩\", \"蚀\", \"尓\", \"暗\", \"莘\", \"黏\", \"寖\", \"蛔\", \"И\", \"痪\", \"饳\",\n                                  \"妈\", \"Z\",\n                                  \"秏\", \"矽\", \"蘭\", \"艴\", \"菖\", \"寿\", \"撅\", \"秤\", \"颓\", \"廪\", \"醪\", \"耢\", \"螣\", \"椰\",\n                                  \"麈\", \"听\",\n                                  \"敞\", \"铠\", \"润\", \"穑\", \"涟\", \"澹\", \"茨\", \"昨\", \"嚯\", \"钟\", \"護\", \"榇\", \"曦\", \"蜎\",\n                                  \"呷\", \"邦\",\n                                  \"瘵\", \"鲬\", \"谖\", \"概\", \"九\", \"飞\", \"潇\", \"高\", \"锫\", \"钐\", \"徘\", \"诟\", \"缧\", \"剞\",\n                                  \"【\", \"簋\",\n                                  \"噍\", \"痋\", \"关\", \"糁\", \"鹊\", \"潤\", \"邬\", \"赔\", \"序\", \"盤\", \"拙\", \"盾\", \"鸫\", \"迟\",\n                                  \"氇\", \"塄\",\n                                  \"庀\", \"噩\", \"臃\", \"绔\", \"岔\", \"珠\", \"癀\", \"骡\", \"隶\", \"堋\", \"笆\", \"影\", \"昶\", \"飗\",\n                                  \"α\", \"薄\",\n                                  \"碜\", \"瞅\", \"奠\", \"鲽\", \"牂\", \"裆\", \"刀\", \"遑\", \"隙\", \"沔\", \"訾\", \"旇\", \"s\", \"诮\",\n                                  \"炱\", \"榚\",\n                                  \"些\", \"縯\", \"提\", \"甚\", \"埏\", \"峣\", \"意\", \"出\", \"郡\", \"摊\", \"哦\", \"轼\", \"嚒\", \"杈\",\n                                  \"痢\", \"裥\",\n                                  \"袖\", \"陔\", \"溷\", \"裀\", \"迄\", \"枇\", \"筑\", \"貊\", \"鲃\", \"鸪\", \"Ｖ\", \"鞭\", \"粳\", \"菥\",\n                                  \"盒\", \"毙\",\n                                  \"风\", \"壽\", \"胝\", \"章\", \"泄\", \"浜\", \"菇\", \"釘\", \"揖\", \"蝰\", \"榧\", \"掊\", \"瘿\", \"亍\",\n                                  \"欤\", \"髻\",\n                                  \"歃\", \"朱\", \"撇\", \"铁\", \"兜\", \"喋\", \"趵\", \"瘼\", \"芤\", \"邳\", \"除\", \"滌\", \"么\", \"践\",\n                                  \"矜\", \"曆\",\n                                  \"炒\", \"咔\", \"促\", \"姐\", \"酦\", \"货\", \"箔\", \"锡\", \"吝\", \"医\", \"汀\", \"精\", \"馘\", \"骶\",\n                                  \"碉\", \"啷\",\n                                  \"缉\", \"褪\", \"阙\", \"滕\", \"蓐\", \"搏\", \"俅\", \"癌\", \"股\", \"圪\", \"孕\", \"鳕\", \"话\", \"鳳\",\n                                  \"妩\", \"馬\",\n                                  \"鞣\", \"璁\", \"测\", \"螠\", \"圆\", \"颥\", \"卒\", \"钲\", \"䨱\", \"骢\", \"批\", \"陨\", \"婶\", \"熵\",\n                                  \"鸣\", \"梁\",\n                                  \"怅\", \"滑\", \"驵\", \"帑\", \"鑽\", \"痈\", \"鲑\", \"犍\", \"茑\", \"糧\", \"谫\", \"咒\", \"绘\", \"塆\",\n                                  \"耖\", \"铮\",\n                                  \"殳\", \"角\", \"齮\", \"挻\", \"捎\", \"2\", \"З\", \"廋\", \"泻\", \"犊\", \"儋\", \"椋\", \"聍\", \"鼬\",\n                                  \"鳏\", \"收\",\n                                  \"跞\", \"盥\", \"信\", \"嘴\", \"眉\", \"黠\", \"纡\", \"Ω\", \"愆\", \"桹\", \"昽\", \"讠\", \"蚧\", \"龀\",\n                                  \"鳓\", \"麓\",\n                                  \"括\", \"蘊\", \"鈇\", \"写\", \"焕\", \"哒\", \"忌\", \"咳\", \"蜮\", \"衄\", \"氰\", \"邘\", \"缇\", \"缮\",\n                                  \"表\", \"续\",\n                                  \"篇\", \"旄\", \"闻\", \"門\", \"偃\", \"茳\", \"晗\", \"鋪\", \"讶\", \"衙\", \"闭\", \"管\", \"傒\", \"藔\",\n                                  \"鳯\", \"萼\",\n                                  \"泥\", \"汔\", \"浆\", \"姚\", \"几\", \"含\", \"沆\", \"繇\", \"灾\", \"嗦\", \"饬\", \"系\", \"熠\", \"漶\",\n                                  \"潭\", \"牲\",\n                                  \"湘\", \"稁\", \"宄\", \"亳\", \"杏\", \"豳\", \"監\", \"印\", \"旁\", \"辙\", \"播\", \"让\", \"乳\", \"镚\",\n                                  \"腒\", \"衅\",\n                                  \"铅\", \"殛\", \"形\", \"颚\", \"茸\", \"绚\", \"铲\", \"贬\", \"溆\", \"寘\", \"傫\", \"解\", \"事\", \"旻\",\n                                  \"差\", \"竣\",\n                                  \"篃\", \"渥\", \"嵩\", \"@\", \"鹀\", \"哈\", \"痍\", \"绪\", \"囔\", \"渗\", \"帐\", \"叙\", \"⑦\", \"跖\",\n                                  \"貝\", \"盅\",\n                                  \"碶\", \"哗\", \"裼\", \"窝\", \"滙\", \"郸\", \"延\", \"炼\", \"芹\", \"簃\", \"谭\", \"莱\", \"佞\", \"猝\",\n                                  \"褥\", \"陆\",\n                                  \"王\", \"碴\", \"粑\", \"怃\", \"倭\", \"貉\", \"硈\", \"裴\", \"溍\", \"坂\", \"勐\", \"踬\", \"敌\", \"改\",\n                                  \"膠\", \"罘\",\n                                  \"罚\", \"繁\", \"幢\", \"煸\", \"扩\", \"黑\", \"氮\", \"孓\", \"饔\", \"姹\", \"蠖\", \"倬\", \"慝\", \"沩\",\n                                  \"嚏\", \"雌\",\n                                  \"琏\", \"莹\", \"觊\", \"颟\", \"坤\", \"筅\", \"桉\", \"肈\", \"幻\", \"”\", \"烽\", \"蓅\", \"噌\", \"桎\",\n                                  \"矻\", \"指\",\n                                  \"瀚\", \"羊\", \"邒\", \"筒\", \"匣\", \"旨\", \"葑\", \"团\", \"偻\", \"镛\", \"忉\", \"帱\", \"往\", \"刎\",\n                                  \"害\", \"母\",\n                                  \"串\", \"酢\", \"舟\", \"栝\", \"娣\", \"⒉\", \"装\", \"笊\", \"篑\", \"垄\", \"镳\", \"牝\", \"煲\", \"氵\",\n                                  \"遂\", \"骜\",\n                                  \"钜\", \"屡\", \"宇\", \"z\", \"惨\", \"潆\", \"鹃\", \"豌\", \"浞\", \"幄\", \"麺\", \"暽\", \"弁\", \"菤\",\n                                  \"酲\", \"虑\",\n                                  \"样\", \"访\", \"睁\", \"黼\", \"悞\", \"禧\", \"涠\", \"舂\", \"駕\", \"屈\", \"噀\", \"邽\", \"炅\", \"欸\",\n                                  \"隆\", \"描\",\n                                  \"绦\", \"派\", \"溲\", \"颙\", \"忐\", \"鹺\", \"只\", \"诈\", \"腭\", \"亵\", \"这\", \"炀\", \"趣\", \"喙\",\n                                  \"跨\", \"場\",\n                                  \"全\", \"搢\", \"舨\", \"踢\", \"巿\", \"糸\", \"乐\", \"澈\", \"羰\", \"匯\", \"D\", \"濒\", \"莛\", \"癯\",\n                                  \"娴\", \"姒\",\n                                  \"祥\", \"渖\", \"庭\", \"渑\", \"挹\", \"狉\", \"萍\", \"鹚\", \"焻\", \"自\", \"舸\", \"岫\", \"飑\", \"戍\",\n                                  \"淙\", \"愠\",\n                                  \"导\", \"賣\", \"进\", \"赳\", \"鱿\", \"硂\", \"僤\", \"O\", \"拟\", \"钨\", \"笳\", \"汴\", \"挤\", \"稞\",\n                                  \"柏\", \"阐\",\n                                  \"弥\", \"艽\", \"爻\", \"魭\", \"俶\", \"聂\", \"鲎\", \"齌\", \"菀\", \"僜\", \"煅\", \"满\", \"兀\", \"辔\",\n                                  \"舊\", \"胥\",\n                                  \"卢\", \"额\", \"膝\", \"嵬\", \"昼\", \"唏\", \"璨\", \"苷\", \"舫\", \"倨\", \"耵\", \"碳\", \"鄺\", \"橘\",\n                                  \"裔\", \"裸\",\n                                  \"宋\", \"窋\", \"悚\", \"昱\", \"错\", \"咣\", \"檄\", \"硁\", \"莆\", \"肃\", \"曼\", \"垍\", \"绵\", \"役\",\n                                  \"內\", \"館\",\n                                  \"规\", \"犋\", \"毅\", \"锨\", \"瓘\", \"丘\", \"疝\", \"杀\", \"袗\", \"屏\", \"阎\", \"衹\", \"嚣\", \"冼\",\n                                  \"铪\", \"熏\",\n                                  \"ｔ\", \"储\", \"傧\", \"髁\", \"邙\", \"窴\", \"泾\", \"止\", \"晾\", \"涵\", \"庸\", \"庠\", \"靿\", \"睚\",\n                                  \"减\", \"衲\",\n                                  \"思\", \"簖\", \"耘\", \"之\", \"斑\", \"扬\", \"袼\", \"缗\", \"菏\", \"滍\", \"研\", \"垚\", \"艘\", \"黇\",\n                                  \"蜘\", \"汨\",\n                                  \"侦\", \"疃\", \"再\", \"沂\", \"榛\", \"励\", \"嚼\", \"拴\", \"钴\", \"珑\", \"撕\", \"鸯\", \"共\", \"醐\",\n                                  \"揿\", \"醴\",\n                                  \"凭\", \"菹\", \"鹬\", \"捷\", \"掼\", \"芝\", \"缪\", \"咏\", \"挺\", \"蒗\", \"疖\", \"伸\", \"索\", \"黉\",\n                                  \"髋\", \"習\",\n                                  \"姜\", \"蔺\", \"扶\", \"忽\", \"锉\", \"戚\", \"珲\", \"摸\", \"黛\", \"跌\", \"螈\", \"冚\", \"洱\", \"鼯\",\n                                  \"庡\", \"痒\",\n                                  \"哆\", \"品\", \"歆\", \"登\", \"呔\", \"追\", \"鉫\", \"碾\", \"祚\", \"总\", \"帚\", \"薹\", \"趴\", \"容\",\n                                  \"滘\", \"❋\",\n                                  \"迷\", \"拾\", \"炯\", \"析\", \"佼\", \"嗾\", \"-\", \"针\", \"滩\", \"禅\", \"讯\", \"織\", \"饱\", \"哟\",\n                                  \"蹓\", \"侧\",\n                                  \"蹯\", \"踽\", \"趙\", \"漫\", \"卷\", \"朴\", \"卺\", \"狈\", \"绉\", \"浉\", \"玳\", \"榕\", \"畛\", \"蛾\",\n                                  \"帔\", \"欠\",\n                                  \"劙\", \"矾\", \"進\", \"蚺\", \"骨\", \"捂\", \"疾\", \"璱\", \"圠\", \"坚\", \"弯\", \"秩\", \"逧\", \"烟\",\n                                  \"佛\", \"嫱\",\n                                  \"鳢\", \"裹\", \"耥\", \"潮\", \"巽\", \"嶝\", \"廷\", \"鳆\", \"五\", \"西\", \"壤\", \"慌\", \"鴈\", \"爡\",\n                                  \"‧\", \"儆\",\n                                  \"萘\", \"愁\", \"昔\", \"咩\", \"侃\", \"炫\", \"迳\", \"构\", \"缶\", \"皴\", \"捱\", \"菜\", \"秀\", \"粢\",\n                                  \"畵\", \"辊\",\n                                  \"伟\", \"榄\", \"嗪\", \"已\", \"聖\", \"枕\", \"恢\", \"厍\", \"涅\", \"鄢\", \"饨\", \"鲨\", \"谪\", \"礤\",\n                                  \"搁\", \"疔\",\n                                  \"雎\", \"羿\", \"犁\", \"硐\", \"盹\", \"若\", \"操\", \"昀\", \"亩\", \"凑\", \"睃\", \"贰\", \"穷\", \"荆\",\n                                  \"葹\", \"嘃\",\n                                  \"廓\", \"憔\", \"制\", \"胧\", \"染\", \"麿\", \"镴\", \"砀\", \"组\", \"茎\", \"畫\", \"哑\", \"坨\", \"罱\",\n                                  \"刳\", \"嘲\",\n                                  \"瞰\", \"缏\", \"侩\", \"谝\", \"谮\", \"还\", \"惋\", \"佈\", \"谏\", \"酗\", \"怩\", \"ｉ\", \"秽\", \"抻\",\n                                  \"蟪\", \"狠\",\n                                  \"辑\", \"羟\", \"娉\", \"肯\", \"毕\", \"枸\", \"啮\", \"鳙\", \"要\", \"娑\", \"蜈\", \"忍\", \"侗\", \"Р\",\n                                  \"凛\", \"巉\",\n                                  \"拽\", \"该\", \"俎\", \"惠\", \"薅\", \"猬\", \"忲\", \"●\", \"哏\", \"柔\", \"沉\", \"磁\", \"脾\", \"龃\",\n                                  \"鲩\", \"钞\",\n                                  \"厂\", \"鱽\", \"濞\", \"群\", \"唱\", \"攝\", \"刃\", \"蹻\", \"剕\", \"朊\", \"啜\", \"语\", \"蜻\", \"遠\",\n                                  \"呖\", \"都\",\n                                  \"嫄\", \"戢\", \"丫\", \"酞\", \"修\", \"户\", \"膏\", \"侈\", \"浣\", \"捍\", \"馒\", \"谱\", \"點\", \"滏\",\n                                  \"跟\", \"鹁\",\n                                  \"书\", \"愉\", \"扭\", \"票\", \"耒\", \"燁\", \"魚\", \"拨\", \"鞑\", \"匆\", \"最\", \"憨\", \"晨\", \"癍\",\n                                  \"邻\", \"醅\",\n                                  \"骘\", \"骇\", \"蔫\", \"。\", \"珪\", \"安\", \"歉\", \"邑\", \"淦\", \"胱\", \"漏\", \"咂\", \"叮\", \"瘛\",\n                                  \"钺\", \"聘\",\n                                  \"玎\", \"荻\", \"涰\", \"淏\", \"烈\", \"囚\", \"㙟\", \"矫\", \"嗵\", \"澶\", \"磛\", \"肖\", \"蹑\", \"支\",\n                                  \"哪\", \"久\",\n                                  \"嗅\", \"稍\", \"抠\", \"具\", \"裨\", \"韨\", \"虿\", \"漪\", \"外\", \"埸\", \"ä\", \"葡\", \"鲇\", \"廛\",\n                                  \"蝥\", \"广\",\n                                  \"兒\", \"涧\", \"阌\", \"谊\", \"嵴\", \"拂\", \"悸\", \"哳\", \"4\", \"佘\", \"篁\", \"基\", \"赪\", \"掬\",\n                                  \"演\", \"谋\",\n                                  \"酣\", \"植\", \"波\", \"恅\", \"杼\", \"胀\", \"纯\", \"缩\", \"盆\", \"芷\", \"绺\", \"施\", \"礞\", \"莳\",\n                                  \"稻\", \"狐\",\n                                  \"馌\", \"椑\", \"恃\", \"镩\", \"骼\", \"孱\", \"硭\", \"曈\", \"焼\", \"秕\", \"觥\", \"茛\", \"射\", \"肣\",\n                                  \"蟞\", \"′\",\n                                  \"彰\", \"罔\", \"麻\", \"逋\", \"谓\", \"革\", \"藤\", \"堆\", \"忿\", \"茂\", \"屦\", \"炟\", \"碹\", \"啤\",\n                                  \"垤\", \"文\",\n                                  \"佐\", \"叼\", \"蹭\", \"踉\", \"眍\", \"龟\", \"黾\", \"崋\", \"氘\", \"尼\", \"瞢\", \"悦\", \"罢\", \"瑀\",\n                                  \"睇\", \"贴\",\n                                  \"涿\", \"拍\", \"庥\", \"粪\", \"陳\", \"闌\", \"蓍\", \"元\", \"磊\", \"忻\", \"葴\", \"买\", \"诺\", \"㐂\",\n                                  \"沦\", \"苏\",\n                                  \"岂\", \"浊\", \"脍\", \"誠\", \"嚬\", \"蔬\", \"黄\", \"銘\", \"钩\", \"劃\", \"嫘\", \"嵖\", \"笄\", \"鸰\",\n                                  \"熳\", \"堑\",\n                                  \"河\", \"遮\", \"尝\", \"灭\", \"愬\", \"娅\", \"鸽\", \"锢\", \"狂\", \"弓\", \"侨\", \"滚\", \"释\", \"晏\",\n                                  \"徵\", \"苡\",\n                                  \"佚\", \"切\", \"惰\", \"降\", \"槎\", \"脑\", \"磺\", \"谟\", \"裉\", \"弘\", \"醺\", \"眇\", \"顒\", \"兰\",\n                                  \"忧\", \"础\",\n                                  \"－\", \"茫\", \"袒\", \"喤\", \"慶\", \"話\", \"跽\", \"堵\", \"能\", \"武\", \"壳\", \"汤\", \"橐\", \"圧\",\n                                  \"嗡\", \"簌\",\n                                  \"斧\", \"林\", \"楊\", \"净\", \"嫌\", \"猛\", \"炸\", \"冠\", \"弦\", \"洵\", \"°\", \"創\", \"葜\", \"苁\",\n                                  \"顏\", \"薛\",\n                                  \"平\", \"舜\", \"崧\", \"撼\", \"哮\", \"窣\", \"殖\", \"象\", \"飒\", \"瞥\", \"玥\", \"斝\", \"胭\", \"葱\",\n                                  \"擎\", \"踰\",\n                                  \"盛\", \"稇\", \"斫\", \"滴\", \"硫\", \"胬\", \"唁\", \"拐\", \"殍\", \"冱\", \"陪\", \"鋈\", \"烦\", \"辋\",\n                                  \"妇\", \"轸\",\n                                  \"潴\", \"荤\", \"碡\", \"徭\", \"膜\", \"秧\", \"淀\", \"缤\", \"琶\", \"^\", \"肋\", \"违\", \"轭\", \"$\",\n                                  \"箕\", \"墩\",\n                                  \"罗\", \"摆\", \"槛\", \"笠\", \"塃\", \"畚\", \"嘛\", \"秸\", \"≥\", \"剪\", \"羅\", \"帜\", \"庇\", \"骙\",\n                                  \"酾\", \"康\",\n                                  \"陬\", \"蝶\", \"闇\", \"圏\", \"琴\", \"鬈\", \"苶\", \"黡\", \"瓠\", \"酋\", \"琎\", \"奏\", \"科\", \"搒\",\n                                  \"億\", \"翡\",\n                                  \"熊\", \"性\", \"痞\", \"篾\", \"邴\", \"篥\", \"饵\", \"揸\", \"狙\", \"鳂\", \"否\", \"煺\", \"畦\", \"凖\",\n                                  \"鹧\", \"宵\",\n                                  \"庛\", \"鬯\", \"袂\", \"昴\", \"徽\", \"奧\", \"鸥\", \"锸\", \"庚\", \"彪\", \"槿\", \"趱\", \"铡\", \"讹\",\n                                  \"莎\", \"約\",\n                                  \"璞\", \"┌\", \"铫\", \"鸈\", \"瞀\", \"鼙\", \"廙\", \"估\", \"屺\", \"锘\", \"渝\", \"汶\", \"囵\", \"跻\",\n                                  \"酏\", \"扎\",\n                                  \"孜\", \"腔\", \"吗\", \"块\", \"潽\", \"“\", \"焚\", \"倘\", \"靥\", \"默\", \"笺\", \"遍\", \"剅\", \"桠\",\n                                  \"极\", \"夷\",\n                                  \"眸\", \"泳\", \"谢\", \"懦\", \")\", \"泜\", \"物\", \"开\", \"淮\", \"邵\", \"卟\", \"徜\", \"轧\", \"苍\",\n                                  \"酶\", \"捌\",\n                                  \"耨\", \"膄\", \"琦\", \"痦\", \"涪\", \"舰\", \"迥\", \"涘\", \"季\", \"悫\", \"初\", \"贩\", \"碍\", \"沼\",\n                                  \"腮\", \"勻\",\n                                  \"恣\", \"他\", \"院\", \"７\", \"蜒\", \"叉\", \"昉\", \"瞽\", \"疢\", \"蓼\", \"相\", \"臜\", \"ü\", \"秘\",\n                                  \"蚌\", \"摉\",\n                                  \"莞\", \"番\", \"盼\", \"冀\", \"缠\", \"学\", \"馗\", \"搞\", \"苛\", \"羹\", \"潟\", \"嬴\", \"杶\", \"妖\",\n                                  \"↓\", \"銭\",\n                                  \"斄\", \"猢\", \"搂\", \"芦\", \"埶\", \"癜\", \"铴\", \"從\", \"留\", \"硎\", \"簇\", \"臬\", \"侮\", \"鳎\",\n                                  \"頉\", \"所\",\n                                  \"邝\", \"哂\", \"弛\", \"垂\", \"暑\", \"仿\", \"療\", \"轾\", \"熜\", \"悃\", \"勘\", \"鋫\", \"泞\", \"閃\",\n                                  \"＋\", \"士\",\n                                  \"虐\", \"盡\", \"溯\", \"劣\", \"1\", \"锇\", \"蜇\", \"碛\", \"婴\", \"８\", \"捶\", \"藻\", \"嫰\", \"跹\",\n                                  \"芋\", \"淠\",\n                                  \"疯\", \"Й\", \"诨\", \"醢\", \"痨\", \"栌\", \"摧\", \"噤\", \"灸\", \"馉\", \"蒇\", \"洲\", \"孪\", \"孵\",\n                                  \"亿\", \"枝\",\n                                  \"涕\", \"孟\", \"缎\", \"攒\", \"湧\", \"褛\", \"铺\", \"廣\", \"诃\", \"蕈\", \"维\", \"珣\", \"逖\", \"瓯\",\n                                  \"苘\", \"榫\",\n                                  \"寰\", \"供\", \"铽\", \"暲\", \"义\", \"兖\", \"喆\", \"祇\", \"蝽\", \"膛\", \"髭\", \"尹\", \"乒\", \"柈\",\n                                  \"抓\", \"镋\",\n                                  \"脏\", \"乩\", \"挎\", \"酬\", \"靳\", \"躔\", \"霞\", \"離\", \"桌\", \"ｏ\", \"　\", \"滨\", \"懷\", \"萭\",\n                                  \"望\", \"仆\",\n                                  \"怂\", \"麸\", \"槁\", \"洨\", \"俬\", \"孚\", \"匕\", \"栩\", \"t\", \"被\", \"邗\", \"纺\", \"狄\", \"国\",\n                                  \"苋\", \"眢\",\n                                  \"秣\", \"畤\", \"∵\", \"创\", \"嵫\", \"胖\", \"垮\", \"镁\", \"壑\", \"Ａ\", \"趾\", \"荟\", \"汝\", \"嗥\",\n                                  \"驰\", \"向\",\n                                  \"磴\", \"讪\", \"溅\", \"箍\", \"驾\", \"讙\", \"蛐\", \"眨\", \"醯\", \"筣\", \"鼫\", \"叠\", \"沥\", \"恕\",\n                                  \"埽\", \"甩\",\n                                  \"煜\", \"端\", \"蜃\", \"帏\", \"丙\", \"荏\", \"圻\", \"夥\", \"暖\", \"抛\", \"岸\", \"头\", \"恝\", \"船\",\n                                  \"鞲\", \"の\",\n                                  \"七\", \"怪\", \"诅\", \"茧\", \"北\", \"搓\", \"皖\", \"綉\", \"坪\", \"簪\", \"贵\", \"阍\", \"刑\", \"偶\",\n                                  \"雷\", \"體\",\n                                  \"髡\", \"岚\", \"剂\", \"妾\", \"茬\", \"鹣\", \"鲳\", \"蜊\", \"假\", \"认\", \"嗍\", \"傈\", \"焘\", \"驷\",\n                                  \"賀\", \"氆\",\n                                  \"炝\", \"聋\", \"嘡\", \"悺\", \"﹐\", \"僭\", \"证\", \"侉\", \"屐\", \"吃\", \"十\", \"〕\", \"瀦\", \"骤\",\n                                  \"俳\", \"舁\",\n                                  \"驸\", \"竿\", \"坍\", \"|\", \"普\", \"軒\", \"瘃\", \"现\", \"醾\", \"铈\", \"榭\", \"蓁\", \"唷\", \"睫\",\n                                  \"绰\", \"叶\",\n                                  \"頤\", \"锤\", \"浸\", \"杂\", \"汹\", \"璟\", \"蓖\", \"迦\", \"截\", \"錎\", \"年\", \"達\", \"劁\", \"码\",\n                                  \"乃\", \"捯\",\n                                  \"髪\", \"埚\", \"呯\", \"頭\", \"镈\", \"汆\", \"β\", \"舷\", \"菂\", \"纸\", \"造\", \"晁\", \"卦\", \"蛎\",\n                                  \"枉\", \"脯\",\n                                  \"诛\", \"生\", \"令\", \"桄\", \"恶\", \"鬟\", \"怯\", \"囡\", \"充\", \"省\", \"控\", \"螂\", \"笕\", \"邺\",\n                                  \"扅\", \"斲\",\n                                  \"骏\", \"鹋\", \"队\", \"套\", \"镢\", \"牖\", \"Ｉ\", \"援\", \"封\", \"泚\", \"艿\", \"沮\", \"铙\", \"揳\",\n                                  \"抄\", \"帨\",\n                                  \"近\", \"唾\", \"珥\", \"销\", \"非\", \"啱\", \"驼\", \"瓅\", \"遢\", \"筱\", \"奥\", \"善\", \"氩\", \"盉\",\n                                  \"帖\", \"杜\",\n                                  \"鈉\", \"蕉\", \"鳄\", \"江\", \"鄂\", \"矩\", \"排\", \"诠\", \"准\", \"菼\", \"刻\", \"足\", \"峦\", \"灰\",\n                                  \"僳\", \"蝢\",\n                                  \"孫\", \"據\", \"璆\", \"孳\", \"徹\", \"妆\", \"坭\", \"渌\", \"喏\", \"钦\", \"朔\", \"机\", \"徼\", \"掾\",\n                                  \"其\", \"愧\",\n                                  \"刹\", \"迹\", \"惹\", \"闿\", \"鹘\", \"窗\", \"贳\", \"箓\", \"奡\", \"鸮\", \"翟\", \"滠\", \"辄\", \"夸\",\n                                  \"袱\", \"】\",\n                                  \"阿\", \"摁\", \"觽\", \"垠\", \"棼\", \"杉\", \"甏\", \"旖\", \"阜\", \"猩\", \"埤\", \"醛\", \"馥\", \"哫\",\n                                  \"囝\", \"晖\",\n                                  \"骸\", \"椭\", \"军\", \"哺\", \"束\", \"犄\", \"遛\", \"涡\", \"罄\", \"赇\", \"幌\", \"曙\", \"契\", \"饹\",\n                                  \"圳\", \"仝\",\n                                  \"爝\", \"示\", \"敝\", \"漓\", \"马\", \"铐\", \"掳\", \"鲱\", \"蟀\", \"阵\", \"栒\", \"b\", \"轮\", \"俯\",\n                                  \"嬉\", \"漩\",\n                                  \"佟\", \"捆\", \"迩\", \"液\", \"炊\", \"抒\", \"迭\", \"换\", \"菘\", \"请\", \"柩\", \"腓\", \"妥\", \"怖\",\n                                  \"穆\", \"骝\",\n                                  \"胛\", \"幺\", \"燥\", \"棹\", \"孖\", \"洁\", \"边\", \"彥\", \"睨\", \"桁\", \"淆\", \"醤\", \"奘\", \"伙\",\n                                  \"刘\", \"o\",\n                                  \"過\", \"鏖\", \"怄\", \"镗\", \"蘖\", \"卩\", \"龈\", \"枣\", \"联\", \"圊\", \"贫\", \"郭\", \"梗\", \"赡\",\n                                  \"輸\", \"拼\",\n                                  \"冰\", \"Ë\", \"姓\", \"办\", \"拉\", \"富\", \"对\", \"肩\", \"缬\", \"逻\", \"瞠\", \"な\", \"荚\", \"宝\",\n                                  \"緃\", \"峋\",\n                                  \"鞁\", \"坉\", \"译\", \"银\", \"猹\", \"榞\", \"借\", \"楠\", \"殽\", \"片\", \"谸\", \"雩\", \"琨\", \"颏\",\n                                  \"晷\", \"；\",\n                                  \"莠\", \"楽\", \"嬗\", \"啉\", \"爍\", \"視\", \"岽\", \"荙\", \"冗\", \"『\", \"鯭\", \"觌\", \"喹\", \"药\",\n                                  \"腈\", \"蹰\",\n                                  \"–\", \"泷\", \"榷\", \"卮\", \"缥\", \"各\", \"瘙\", \"凡\", \"悍\", \"劢\", \"６\", \"镰\", \"四\", \"摈\",\n                                  \"驹\", \"陵\",\n                                  \"沟\", \"麟\", \"骊\", \"椀\", \"★\", \"滦\", \"菌\", \"彊\", \"疽\", \"辫\", \"璎\", \"郁\", \"资\", \"粼\",\n                                  \"萄\", \"鳁\",\n                                  \"鸤\", \"漁\", \"痃\", \"绌\", \"蒴\", \"尊\", \"哙\", \"守\", \"坠\", \"胯\", \"泽\", \"持\", \"隅\", \"耧\",\n                                  \"逛\", \"鄯\",\n                                  \"瑜\", \"召\", \"眷\", \"逄\", \"垦\", \"窄\", \"板\", \"赵\", \"源\", \"绹\", \"總\", \"适\", \"轰\", \"钛\",\n                                  \"停\", \"唝\",\n                                  \"燎\", \"栽\", \"燃\", \"搬\", \"夬\", \"掐\", \"簦\", \"旃\", \"更\", \"蹊\", \"熙\", \"埃\", \"偲\", \"蒙\",\n                                  \"舍\", \"杭\",\n                                  \"朋\", \"霍\", \"谙\", \"蓥\", \"赫\", \"鲏\", \"純\", \"缃\", \"蓓\", \"è\", \"萧\", \"锆\", \"诉\", \"恚\",\n                                  \"u\", \"旷\",\n                                  \"⑵\", \"褲\", \"鲟\", \"互\", \"峂\", \"绝\", \"陒\", \"议\", \"脽\", \"态\", \"岙\", \"僮\", \"突\", \"濯\",\n                                  \"犹\", \"阆\",\n                                  \"溧\", \"宜\", \"霣\", \"呆\", \"鄉\", \"觖\", \"濠\", \"耐\", \"橱\", \"敛\", \"踮\", \"怦\", \"鸠\", \"授\",\n                                  \"滫\", \"叭\",\n                                  \"镤\", \"仵\", \"圖\", \"救\", \"变\", \"寕\", \"洋\", \"泃\", \"晥\", \"檎\", \"缦\", \"鏠\", \"悬\", \"彧\",\n                                  \"韓\", \"籽\",\n                                  \"磷\", \"歙\", \"÷\", \"杨\", \"闯\", \"罴\", \"鼠\", \"陋\", \"瀣\", \"揾\", \"匪\", \"晚\", \"丧\", \"彷\",\n                                  \"梏\", \"诽\",\n                                  \"尻\", \"蹢\", \"拊\", \"氕\", \"芳\", \"凸\", \"懊\", \"型\", \"媄\", \"憝\", \"骆\", \"纭\", \"刺\", \"悼\",\n                                  \"藍\", \"欧\",\n                                  \"葳\", \"艺\", \"±\", \"紗\", \"钡\", \"钭\", \"首\", \"栈\", \"闩\", \"勃\", \"喑\", \"栉\", \"栟\", \"焊\",\n                                  \"哀\", \"竖\",\n                                  \"肘\", \"悲\", \"鳜\", \"迨\", \"怿\", \"裘\", \"綮\", \"蕹\", \"冕\", \"无\", \"鼢\", \"戽\", \"鲣\", \"蜍\",\n                                  \"插\", \"扯\",\n                                  \"俣\", \"袪\", \"级\", \"理\", \"茵\", \"矣\", \"障\", \"禊\", \"惯\", \"䄂\", \"宏\", \"韫\", \"栗\", \"编\",\n                                  \"座\", \"跫\",\n                                  \"、\", \"捞\", \"谠\", \"車\", \"袆\", \"舖\", \"暝\", \"9\", \"混\", \"蓊\", \"韂\", \"拳\", \"j\", \"伶\", \"啦\",\n                                  \"0\",\n                                  \"诰\", \"缑\", \"郴\", \"蕲\", \"谛\", \"皋\", \"兢\", \"件\", \"隈\", \"溊\", \"窈\", \"檀\", \"洪\", \"揭\",\n                                  \"油\", \"颐\",\n                                  \"剎\", \"侠\", \"或\", \"腻\", \"迪\", \"舔\", \"牺\", \"倦\", \"夭\", \"蠋\", \"鹑\", \"倜\", \"喱\", \"豨\",\n                                  \"谨\", \"翥\",\n                                  \"馄\", \"蔚\", \"类\", \"鳍\", \"泯\", \"岷\", \"張\", \"紅\", \"情\", \"婪\", \"睡\", \"诒\", \"旋\", \"舱\",\n                                  \"列\", \"求\",\n                                  \"姥\", \"翯\", \"锲\", \"適\", \"蒡\", \"㭗\", \"韵\", \"撄\", \"律\", \"湊\", \"鲪\", \"碓\", \"馓\", \"汛\",\n                                  \"尤\", \"℃\",\n                                  \"泫\", \"竹\", \"溃\", \"诵\", \"乡\", \"楹\", \"肷\", \"戋\", \"獭\", \"撴\", \"晤\", \"嘎\", \"裢\", \"轱\",\n                                  \"歘\", \"鼱\",\n                                  \"舀\", \"潵\", \"腩\", \"挽\", \"至\", \"骞\", \"佻\", \"蕊\", \"轫\", \"岘\", \"斌\", \"《\", \"雇\", \"枘\",\n                                  \"贶\", \"履\",\n                                  \"亭\", \"绍\", \"空\", \"泡\", \"擒\", \"蠓\", \"桼\", \"舢\", \"踵\", \"柢\", \"躺\", \"罥\", \"蔁\", \"幪\",\n                                  \"蒯\", \"≤\",\n                                  \"齉\", \"況\", \"锕\", \"徇\", \"儿\", \"帽\", \"谕\", \"抽\", \"獍\", \"揪\", \"膳\", \"酴\", \"姊\", \"作\",\n                                  \"弍\", \"郦\",\n                                  \"翮\", \"髌\", \"勝\", \"孔\", \"颁\", \"泩\", \"衾\", \"翊\", \"噉\", \"∩\", \"先\", \"的\", \"財\", \"绢\",\n                                  \"崇\", \"饲\",\n                                  \"賓\", \"绾\", \"陡\", \"砾\", \"纷\", \"酱\", \"窎\", \"浕\", \"琫\", \"补\", \"嗽\", \"呛\", \"蚓\", \"伪\",\n                                  \"艨\", \"搡\",\n                                  \"粗\", \"阱\", \"商\", \"郫\", \"喵\", \"缯\", \"炻\", \"州\", \"珽\", \"芒\", \"脶\", \"蕖\", \"拘\", \"\\\\\",\n                                  \"蕃\", \"伏\",\n                                  \"蛏\", \"璘\", \"缡\", \"伞\", \"吸\", \"煞\", \"嗫\", \"餪\", \"━\", \"8\", \"漠\", \"衮\", \"峭\", \"筌\",\n                                  \"阀\", \"乇\",\n                                  \"杞\", \"镕\", \"鹈\", \"觚\", \"疋\", \"猥\", \"肚\", \"阃\", \"地\", \"鸾\", \"玚\", \"镀\", \"诬\", \"凇\",\n                                  \"惬\", \"劝\",\n                                  \"堠\", \"睪\", \"瞪\", \"涓\", \"專\", \"琢\", \"蠹\", \"裂\", \"芎\", \"轲\", \"谯\", \"畋\", \"长\", \"攘\",\n                                  \"缁\", \"吵\",\n                                  \"汈\", \"稂\", \"咤\", \"甸\", \"瀑\", \"讣\", \"翠\", \"綦\", \"笑\", \"掺\", \"宫\", \"唆\", \"旗\", \"帘\",\n                                  \"遵\", \"唪\",\n                                  \"连\", \"必\", \"姬\", \"枵\", \"渫\", \"神\", \"凱\", \"虞\", \"闵\", \"爭\", \"迢\", \"飓\", \"桴\", \"冑\",\n                                  \"招\", \"鬶\",\n                                  \"赊\", \"朦\", \"薜\", \"逗\", \"铩\", \"焖\", \"狱\", \"昕\", \"犀\", \"捏\", \"侓\", \"爆\", \"箧\", \"怠\",\n                                  \"缐\", \"苄\",\n                                  \"踯\", \"暹\", \"絮\", \"裁\", \"嘶\", \"诙\", \"攥\", \"¥\", \"痫\", \"摹\", \"朕\", \"薰\", \"闼\", \"樨\",\n                                  \"需\", \"蕾\",\n                                  \"扔\", \"服\", \"蚩\", \"漳\", \"瞻\", \"陟\", \"诐\", \"爽\", \"耩\", \"坏\", \"寶\", \"瞧\", \"蘅\", \"爺\",\n                                  \"仇\", \"瞈\",\n                                  \"揉\", \"隰\", \"阏\", \"皤\", \"鉏\", \"郇\", \"啵\", \"僧\", \"渐\", \"骠\", \"厾\", \"谦\", \"榱\", \"蓮\",\n                                  \"乂\", \"伷\",\n                                  \"觐\", \"遫\", \"畀\", \"污\", \"眭\", \"蝗\", \"亢\", \"腾\", \"遇\", \"欺\", \"狸\", \"籼\", \"锯\", \"赚\",\n                                  \"槔\", \"域\",\n                                  \"老\", \"掩\", \"锎\", \"邪\", \"沬\", \"袯\", \"映\", \"肤\", \"舒\", \"箦\", \"涎\", \"缔\", \"孃\", \"萎\",\n                                  \"推\", \"峧\",\n                                  \"嫒\", \"嵐\", \"怒\", \"闾\", \"阅\", \"扢\", \"絡\", \"剩\", \"腢\", \"晌\", \"铟\", \"铚\", \"燔\", \"鄜\",\n                                  \"墠\", \"擤\",\n                                  \"芸\", \"鼩\", \"食\", \"朰\", \"啥\", \"贿\", \"券\", \"垩\", \"典\", \"逭\", \"成\", \"帧\", \"侯\", \"妒\",\n                                  \"顷\", \"晩\",\n                                  \"浦\", \"汳\", \"㾄\", \"坊\", \"②\", \"蝼\", \"倩\", \"挦\", \"騠\", \"蓂\", \"兹\", \"渤\", \"茴\", \"矶\",\n                                  \"煤\", \"伛\",\n                                  \"逃\", \"堞\", \"漭\", \"闽\", \"埠\", \"妗\", \"烙\", \"傀\", \"滢\", \"堂\", \"骅\", \"崮\", \"兿\", \"螟\",\n                                  \"榴\", \"蒈\",\n                                  \"蟛\", \"员\", \"嗟\", \"毗\", \"鹭\", \"毖\", \"籍\", \"傣\", \"偈\", \"澴\", \"耆\", \"黔\", \"薷\", \"俘\",\n                                  \"箸\", \"蒺\",\n                                  \"记\", \"铣\", \"拥\", \"瑰\", \"抉\", \"史\", \"急\", \"什\", \"川\", \"曪\", \"剖\", \"罪\", \"扥\", \"鱼\",\n                                  \"羌\", \"复\",\n                                  \"昵\", \"朓\", \"氪\", \"矅\", \"ò\", \"摒\", \"催\", \"{\", \"懂\", \"莉\", \"屃\", \"症\", \"遒\", \"璋\",\n                                  \"鄒\", \"玄\",\n                                  \"氦\", \"舳\", \"納\", \"锷\", \"鲥\", \"羸\", \"怵\", \"嬖\", \"飚\", \"倔\", \"辨\", \"篌\", \"娄\", \"洎\",\n                                  \"弟\", \"悝\",\n                                  \"婥\", \"待\", \"梃\", \"棕\", \"撞\", \"肊\", \"婺\", \"桥\", \"慕\", \"5\", \"尖\", \"监\", \"囊\", \"腎\",\n                                  \"瘁\", \"⑴\",\n                                  \"伢\", \"邈\", \"炷\", \"籴\", \"月\", \"终\", \"龠\", \"蹇\", \"柯\", \"噜\", \"多\", \"玮\", \"踹\", \"泣\",\n                                  \"圮\", \"辈\",\n                                  \"鄙\", \"赆\", \"蠃\", \"珈\", \"鬃\", \"识\", \"甑\", \"藓\", \"宥\", \"韧\", \"隗\", \"跚\", \"峁\", \"晒\",\n                                  \"戳\", \"環\",\n                                  \"葓\", \"筐\", \"瑚\", \"稆\", \"巩\", \"葵\", \"网\", \"铨\", \"仡\", \"呶\", \"休\", \"村\", \"傩\", \"浡\",\n                                  \"祝\", \"幅\",\n                                  \"晳\", \"岿\", \"[\", \"尃\", \"响\", \"咽\", \"讵\", \"淹\", \"糠\", \"驴\", \"烹\", \"甪\", \"焯\", \"整\",\n                                  \"瘆\", \"茀\",\n                                  \"瑞\", \"嘁\", \"赅\", \"芼\", \"震\", \"怼\", \"膑\", \"蒟\", \"钊\", \"缷\", \"獨\", \"俄\", \"噪\", \"亏\",\n                                  \"芍\", \"鲲\",\n                                  \"黟\", \"酃\", \"铻\", \"→\", \"鲡\", \"仑\", \"有\", \"扌\", \"治\", \"聆\", \"腙\", \"冬\", \"剥\", \"诓\",\n                                  \"祃\", \"棘\",\n                                  \"孥\", \"濆\", \"鞋\", \"赣\", \"卜\", \"谆\", \"投\", \"琊\", \"塍\", \"洗\", \"津\", \"肴\", \"奕\", \"掴\",\n                                  \"螗\", \"胸\",\n                                  \"惦\", \"赠\", \"耶\", \"蛸\", \"曷\", \"名\", \"栏\", \"崖\", \"始\", \"孤\", \"篆\", \"椴\", \"模\", \"儙\",\n                                  \"袁\", \"颌\",\n                                  \"卤\", \"寂\", \"呸\", \"蓺\", \"噶\", \"钔\", \"粹\", \"潸\", \"郾\", \"娡\", \"啖\", \"芜\", \"䧳\", \"缟\",\n                                  \"鞅\", \"哇\",\n                                  \"嚄\", \"熛\", \"私\", \"住\", \"鉄\", \"Ｕ\", \"失\", \"蜾\", \"㺃\", \"莨\", \"擂\", \"沕\", \"铄\", \"耰\",\n                                  \"炔\", \"藐\",\n                                  \"锈\", \"苇\", \"芯\", \"檇\", \"龍\", \"珀\", \"筻\", \"褚\", \"缀\", \"棬\", \"仲\", \"杧\", \"铛\", \"挖\",\n                                  \"缸\", \"嵇\",\n                                  \"剟\", \"觋\", \"鬼\", \"天\", \"鹪\", \"豭\", \"腴\", \"驿\", \"粵\", \"馈\", \"迸\", \"夕\", \"蜚\", \"禺\",\n                                  \"迎\", \"狞\",\n                                  \"嶽\", \"躯\", \"暅\", \"蹾\", \"甾\", \"柆\", \"e\", \"欃\", \"無\", \"羽\", \"蛛\", \"僖\", \"碲\", \"遴\",\n                                  \"厝\", \"滂\",\n                                  \"眦\", \"鹅\", \"咖\", \"潜\", \"媽\", \"啴\", \"寨\", \"琬\", \"判\", \"塌\", \"与\", \"剧\", \"掮\", \"读\",\n                                  \"庆\", \"愚\",\n                                  \"氲\", \"梾\", \"稗\", \"很\", \"饯\", \"淘\", \"灞\", \"A\", \"！\", \"飾\", \"醚\", \"壁\", \"芮\", \"蔼\",\n                                  \"知\", \"郯\",\n                                  \"瞒\", \"术\", \"法\", \"匠\", \"┅\", \"尕\", \"脂\", \"琅\", \"孝\", \"埙\", \"濟\", \"袷\", \"方\", \"芾\",\n                                  \"驽\", \"线\",\n                                  \"咡\", \"睿\", \"滥\", \"鞨\", \"駹\", \"馎\", \"蛲\", \"申\", \"涣\", \"牗\", \"跄\", \"鲐\", \"泐\", \"铍\",\n                                  \"肓\", \"é\",\n                                  \"司\", \"辣\", \"慑\", \"崞\", \"魏\", \"髯\", \"涯\", \"滃\", \"薪\", \"~\", \"鐵\", \"町\", \"芥\", \"匿\",\n                                  \"癞\", \"嘚\",\n                                  \"□\", \"啪\", \"俇\", \"橛\", \"巅\", \"鄞\", \"痱\", \"回\", \"着\", \"魂\", \"瘀\", \"埒\", \"措\", \"蚪\",\n                                  \"锁\", \"巴\",\n                                  \"芏\", \"另\", \"忏\", \"洇\", \"⑾\", \"箱\", \"劳\", \"榈\", \"Ｂ\", \"毒\", \"泰\", \"巍\", \"寇\", \"斛\",\n                                  \"赖\", \"酒\",\n                                  \"密\", \"左\", \"莜\", \"茯\", \"脆\", \"饴\", \"洳\", \"舉\", \"酪\", \"鼒\", \"職\", \"桫\", \"螋\", \"砌\",\n                                  \"戬\", \"前\",\n                                  \"豁\", \"膲\", \"鲯\", \"憋\", \"珺\", \"蹂\", \"亥\", \"冷\", \"蜔\", \"俦\", \"碇\", \"慰\", \"扒\", \"亮\",\n                                  \"弒\", \"胫\",\n                                  \"肠\", \"弇\", \"拣\", \"丸\", \"涫\", \"勉\", \"帝\", \"玠\", \"应\", \"砜\", \"鬓\", \"泮\", \"鳖\", \"峇\",\n                                  \"辗\", \"吴\",\n                                  \"僡\", \"玊\", \"钘\", \"惘\", \"奁\", \"翰\", \"爨\", \"罽\", \"莶\", \"纻\", \"菪\", \"興\", \"钧\", \"鄹\",\n                                  \"缌\", \"嘉\",\n                                  \"玲\", \"蛋\", \"倚\", \"镬\", \"彳\", \"氯\", \"谐\", \"疗\", \"魉\", \"扈\", \"鏡\", \"涤\", \"佑\", \"勾\",\n                                  \"饽\", \"R\",\n                                  \"局\", \"醉\", \"燫\", \"驱\", \"崽\", \"榮\", \"锄\", \"脎\", \"枓\", \"敲\", \"俑\", \"镶\", \"当\", \"逦\",\n                                  \"寅\", \"捽\",\n                                  \"宗\", \"茼\", \"稿\", \"躇\", \"晋\", \"东\", \"渭\", \"闶\", \"潦\", \"慊\", \"蔟\", \"疑\", \"蜡\", \"嬛\",\n                                  \"荒\", \"扪\",\n                                  \"拈\", \"受\", \"沱\", \"螽\", \"嗣\", \"瘰\", \"颖\", \"百\", \"楱\", \"崛\", \"窿\", \"蓬\", \"禨\", \"螵\",\n                                  \"捕\", \"鳀\",\n                                  \"霰\", \"瘸\", \"圄\", \"陂\", \"敢\", \"矗\", \"炉\", \"篪\", \"注\", \"凉\", \"摔\", \"衿\", \"g\", \"遘\",\n                                  \"鳟\", \"腚\",\n                                  \"泱\", \"荣\", \"池\", \"杰\", \"阻\", \"里\", \"峥\", \"葺\", \"翔\", \"柁\", \"飐\", \"载\", \"刨\", \"瘊\",\n                                  \"溏\", \"嚭\",\n                                  \"穝\", \"站\", \"笞\", \"厌\", \"门\", \"汞\", \"雠\", \"靖\", \"怨\", \"葙\", \"厅\", \"凉\", \"荨\", \"底\",\n                                  \"坼\", \"海\",\n                                  \"轩\", \"秃\", \"醭\", \"莒\", \"坎\", \"驺\", \"瀛\", \"嵝\", \"溥\", \"嚋\", \"寤\", \"k\", \"築\", \"耔\",\n                                  \"跎\", \"小\",\n                                  \"弊\", \"疭\", \"√\", \"洞\", \"利\", \"次\", \"迕\", \"鸿\", \"刁\", \"媳\", \"酹\", \"磋\", \"勒\", \"伎\",\n                                  \"浔\", \"斤\",\n                                  \"珊\", \"鸳\", \"颊\", \"塗\", \"刈\", \"龛\", \"縻\", \"楚\", \"脓\", \"南\", \"伧\", \"桨\", \"尸\", \"退\",\n                                  \"亊\", \"侔\",\n                                  \"蓟\", \"削\", \"诲\", \"瑯\", \"挝\", \"绩\", \"嶂\", \"耷\", \"太\", \"著\", \"讥\", \"烂\", \"哥\", \"菔\",\n                                  \"唳\", \"筫\",\n                                  \"嚷\", \"斯\", \"蔡\", \"碧\", \"慵\", \"搐\", \"琵\", \"逶\", \"菡\", \"篙\", \"驭\", \"莲\", \"毫\", \"犯\",\n                                  \"坌\", \"啕\",\n                                  \"疴\", \"傻\", \"牧\", \"肺\", \"既\", \"悟\", \"讳\", \"练\", \"钠\", \"胨\", \"Ｇ\", \"迁\", \"帙\", \"嫦\",\n                                  \"哿\", \"柝\",\n                                  \"迤\", \"庑\", \"踟\", \"粤\", \"乜\", \"悭\", \"霁\", \"在\", \"虔\", \"蓦\", \"暾\", \"鲅\", \"様\", \"徐\",\n                                  \"诫\", \"料\",\n                                  \"蒂\", \"揎\", \"溜\", \"崎\", \"玦\", \"隐\", \"绳\", \"幼\", \"钼\", \"腧\", \"槌\", \"镅\", \"锿\", \"蹁\",\n                                  \"猱\", \"狁\",\n                                  \"蹈\", \"S\", \"傢\", \"}\", \"珉\", \"浴\", \"龚\", \"吇\", \"肆\", \"⑩\", \"臌\", \"鏢\", \"―\", \"定\", \"哧\",\n                                  \"螳\",\n                                  \"爹\", \"摞\", \"榍\", \"苩\", \"丑\", \"犴\", \"璀\", \"偎\", \"燹\", \"洯\", \"啁\", \"鱾\", \"計\", \"镂\",\n                                  \"字\", \"琉\",\n                                  \"壴\", \"霖\", \"蟜\", \"做\", \"松\", \"扣\", \"徊\", \"叱\", \"桑\", \"≠\", \"寓\", \"崔\", \"茌\", \"`\",\n                                  \"殓\", \"猖\",\n                                  \"慎\", \"坻\", \"皮\", \"喔\", \"耕\", \"拧\", \"织\", \"桂\", \"垝\", \"约\", \"飯\", \"皿\", \"移\", \"微\",\n                                  \"桅\", \"钬\",\n                                  \"赑\", \"宓\", \"颉\", \"掂\", \"希\", \"沁\", \"翳\", \"澝\", \"崭\", \"聃\", \"蔸\", \"磕\", \"崚\", \"奉\",\n                                  \"槍\", \"颠\",\n                                  \"任\", \"飕\", \"蛴\", \"歼\", \"蛭\", \"￥\", \"鉵\", \"刷\", \"泓\", \"頫\", \"诤\", \"阈\", \"诖\", \"漂\",\n                                  \"冯\", \"柠\",\n                                  \"本\", \"狼\", \"芗\", \"丹\", \"柒\", \"饫\", \"衫\", \"摩\", \"桃\", \"啼\", \"譄\", \"醌\", \"帡\", \"少\",\n                                  \"螃\", \"祷\",\n                                  \"幸\", \"喘\", \"噼\", \"甲\", \"刭\", \"泊\", \"那\", \"舄\", \"畲\", \"遊\", \"記\", \"绠\", \"蝈\", \"忒\",\n                                  \"耙\", \"鹌\",\n                                  \"搽\", \"绕\", \"镠\", \"凼\", \"扫\", \"鸵\", \"匡\", \"缈\", \"铼\", \"挢\", \"踊\", \"噭\", \"苴\", \"貌\",\n                                  \"啾\", \"蒜\",\n                                  \"茱\", \"⒅\", \"邛\", \"棉\", \"怀\", \"筵\", \"笾\", \"邢\", \"濱\", \"蒲\", \"嫠\", \"儡\", \"益\", \"萊\",\n                                  \"歩\", \"日\",\n                                  \"婢\", \"楔\", \"嚎\", \"髂\", \"禄\", \"巫\", \"懿\", \"砍\", \"惆\", \"袭\", \"～\", \"欲\", \"鳅\", \"書\",\n                                  \"撷\", \"库\",\n                                  \"绻\", \"⒁\", \"蒹\", \"辜\", \"屉\", \"奂\", \"龇\", \"诡\", \"醑\", \"儀\", \"讷\", \"聒\", \"盖\", \"浅\",\n                                  \"長\", \"蛑\",\n                                  \"念\", \"辒\", \"蚊\", \"勖\", \"揣\", \"岬\", \"糅\", \"刊\", \"蛆\", \"硌\", \"柜\", \"惗\", \"激\", \"颈\",\n                                  \"閣\", \"唬\",\n                                  \"捧\", \"蒽\", \"爸\", \"侏\", \"氧\", \"蛤\", \"牡\", \"瘦\", \"铉\", \"撒\", \"屿\", \"谔\", \"钀\", \"瓦\",\n                                  \"恂\", \"钻\",\n                                  \"声\", \"馨\", \"贷\", \"藁\", \"闰\", \"人\", \"瀹\", \"间\", \"炜\", \"煨\", \"畴\", \"鞡\", \"悔\", \"量\",\n                                  \"原\", \"屁\",\n                                  \"杯\", \"趋\", \"愎\", \"瓶\", \"烘\", \"韬\", \"姮\", \"勰\", \"眛\", \"饮\", \"瘐\", \"决\", \"版\", \"際\",\n                                  \"俸\", \"此\",\n                                  \"辽\", \"愫\", \"爷\", \"隘\", \"螯\", \"腕\", \"闟\", \"厣\", \"齁\", \"矿\", \"女\", \"扇\", \"郄\", \"诚\",\n                                  \"焜\", \"<\",\n                                  \"檵\", \"赙\", \"郢\", \"酌\", \"恳\", \"侵\", \"劍\", \"徳\", \"脔\", \"岍\", \"倍\", \"隹\", \"镲\", \"僬\",\n                                  \"○\", \"啭\",\n                                  \"坳\", \"谰\", \"璪\", \"昆\", \"⒆\", \"惧\", \"虺\", \"篡\", \"锐\", \"邮\", \"嵊\", \"恹\", \"茄\", \"黯\",\n                                  \"對\", \"魑\",\n                                  \"禀\", \"添\", \"汎\", \"廉\", \"戈\", \"∈\", \"陈\", \"肟\", \"螅\", \"缰\", \"啃\", \"瘾\", \"辁\", \"茜\",\n                                  \"曝\", \"Ｃ\",\n                                  \"餍\", \"蜴\", \"咦\", \"臺\", \"扺\", \"隽\", \"崴\", \"遐\", \"胃\", \"铕\", \"楗\", \"墀\", \"魈\", \"淑\",\n                                  \"邰\", \"飧\",\n                                  \"勤\", \"糨\", \"你\", \"铂\", \"蛰\", \"锻\", \"塈\", \"予\", \"怏\", \"鷪\", \"暂\", \"诞\", \"會\", \"鼐\",\n                                  \"辏\", \"矬\",\n                                  \"筜\", \"蟒\", \"柫\", \"靴\", \"垒\", \"樵\", \"狨\", \"魋\", \"查\", \"掸\", \"＇\", \"每\", \"浮\", \"绞\",\n                                  \"疍\", \"於\",\n                                  \"饦\", \"辐\", \"墟\", \"窳\", \"养\", \"墦\", \"鲔\", \"黝\", \"迈\", \"砟\", \"伥\", \"藜\", \"墅\", \"喬\",\n                                  \"卬\", \"赶\",\n                                  \"眼\", \"龌\", \"主\", \"嗞\", \"転\", \"襕\", \"，\", \"杲\", \"儒\", \"政\", \"蹩\", \"付\", \"Я\", \"厢\",\n                                  \"点\", \"如\",\n                                  \"茗\", \"奍\", \"嗌\", \"蕴\", \"问\", \"膚\", \"硒\", \"佃\", \"居\", \"赍\", \"鯨\", \"槜\", \"衡\", \"廐\",\n                                  \"鲾\", \"慈\",\n                                  \"莫\", \"篮\", \"铱\", \"园\", \"范\", \"靠\", \"叻\", \"绸\", \"众\", \"抑\", \"浃\", \"極\", \"辀\", \"千\",\n                                  \"蔯\", \"ｒ\",\n                                  \"碱\", \"應\", \"夼\", \"祺\", \"绣\", \"澉\", \"愛\", \"譬\", \"刚\", \"扼\", \"檫\", \"时\", \"荼\", \"部\",\n                                  \"耽\", \"稀\",\n                                  \"琳\", \"鎮\", \"鳃\", \"疌\", \"挠\", \"京\", \"筴\", \"胳\", \"橡\", \"裱\", \"栊\", \"蛩\", \"流\", \"猄\",\n                                  \"葭\", \"邯\",\n                                  \"伤\", \"秦\", \"孺\", \"郓\", \"筏\", \"茉\", \"谈\", \"黥\", \"鳇\", \"魅\", \"秫\", \"敫\", \"肄\", \"俪\",\n                                  \"尺\", \"度\",\n                                  \"廊\", \"昏\", \"怎\", \"钎\", \"愤\", \"腿\", \"Λ\", \"碘\", \"囤\", \"婆\", \"煋\", \"桀\", \"阪\", \"焒\",\n                                  \"砘\", \"澡\",\n                                  \"阒\", \"臼\", \"茭\", \"纛\", \"唻\", \"胗\", \"歌\", \"吱\", \"铸\", \"種\", \"礳\", \"舾\", \"砰\", \"即\",\n                                  \"慥\", \"缆\",\n                                  \"躞\", \"卖\", \"眆\", \"搎\", \"鲁\", \"稠\", \"惝\", \"毶\", \"耎\", \"挡\", \"异\", \"咨\", \"歔\", \"垫\",\n                                  \"素\", \"鳊\",\n                                  \"打\", \"镏\", \"耗\", \"锭\", \"剀\", \"讓\", \"鍋\", \"歇\", \"拗\", \"齿\", \"聊\", \"惕\", \"塔\", \"况\",\n                                  \"汐\", \"采\",\n                                  \"灣\", \"菁\", \"峰\", \"呋\", \"阴\", \"衽\", \"鹏\", \"挂\", \"鲞\", \"第\", \"浑\", \"秭\", \"铯\", \"胎\",\n                                  \"滔\", \"雕\",\n                                  \"渔\", \"骍\", \"鴻\", \"眚\", \"易\", \"枫\", \"麥\", \"罹\", \"劈\", \"苣\", \"蹄\", \"是\", \"锛\", \"饼\",\n                                  \"铳\", \"器\",\n                                  \"秒\", \"開\", \"舛\", \"纳\", \"庒\", \"饰\", \"发\", \"虎\", \"乏\", \"届\", \"浯\", \"目\", \"霪\", \"氢\",\n                                  \"华\", \"澧\",\n                                  \"陴\", \"誊\", \"欷\", \"瀌\", \"梵\", \"嗖\", \"惩\", \"妞\", \"螓\", \"溇\", \"嬃\", \"笼\", \"嬢\", \"獠\",\n                                  \"辩\", \"骛\",\n                                  \"挪\", \"礅\", \"銎\", \"趺\", \"狍\", \"阑\", \"擦\", \"咙\", \"+\", \"鼻\", \"戆\", \"宿\", \"霏\", \"牁\",\n                                  \"耦\", \"枳\",\n                                  \"鲸\", \"阽\", \"峯\", \"瘭\", \"祁\", \"镜\", \"绮\", \"道\", \"摭\", \"﹒\", \"耠\", \"限\", \"轻\", \"莽\",\n                                  \"帛\", \"唯\",\n                                  \"墒\", \"Ｗ\", \"荦\", \"矸\", \"崃\", \"洫\", \"杳\", \"舌\", \"涌\", \"朵\", \"苑\", \"瓻\", \"辂\", \"凬\",\n                                  \"畺\", \"莩\",\n                                  \"奔\", \"荐\", \"撵\", \"嶲\", \"憧\", \"沖\", \"邱\", \"瞑\", \"瘢\", \"腺\", \"嵯\", \"诗\", \"經\", \"胚\",\n                                  \"谎\", \"央\",\n                                  \"稼\", \"３\", \"冈\", \"痣\", \"故\", \"皎\", \"珅\", \"踅\", \"硇\", \"通\", \"鹱\", \"草\", \"粕\", \"而\",\n                                  \"梨\", \"萜\",\n                                  \"搛\", \"鸺\", \"托\", \"倡\", \"匾\", \"骷\", \"桐\", \"阇\", \"璃\", \"抖\", \"显\", \"镝\", \"I\", \"锣\",\n                                  \"辆\", \"茝\",\n                                  \"虫\", \"谀\", \"萤\", \"帼\", \"滈\", \"鮼\", \"乔\", \"会\", \"产\", \"縢\", \"纱\", \"跆\", \"铤\", \"圯\",\n                                  \"旚\", \"墓\",\n                                  \"棰\", \"苜\", \"聩\", \"蚍\", \"筢\", \"殇\", \"槚\", \"阂\", \"豊\", \"翚\", \"犰\", \"疚\", \"浠\", \"礴\",\n                                  \"界\", \"蛙\",\n                                  \"吁\", \"忪\", \"讫\", \"辇\", \"汧\", \"澥\", \"纮\", \"糺\", \"拭\", \"镉\", \"鄠\", \"讼\", \"鎏\", \"逐\",\n                                  \"烝\", \"扊\",\n                                  \"筹\", \"仪\", \"段\", \"杵\", \"卲\", \"钤\", \"曹\", \"潘\", \"浏\", \"陑\", \"答\", \"期\", \"橋\", \"位\",\n                                  \"梅\", \"榻\",\n                                  \"芨\", \"汭\", \"贇\", \"杅\", \"伋\", \"馁\", \"皈\", \"躁\", \"鲦\", \"良\", \"幤\", \"曺\", \"榖\", \"便\",\n                                  \"氍\", \"窍\",\n                                  \"槃\", \"設\", \"襦\", \"菓\", \"猡\", \"槲\", \"觱\", \"邠\", \"岩\", \"骈\", \"鬲\", \"睽\", \"残\", \"碗\",\n                                  \"凯\", \"览\",\n                                  \"伾\", \"吣\", \"峡\", \"箨\", \"忡\", \"岁\", \"醵\", \"霸\", \"焐\", \"谁\", \"疟\", \"樾\", \"竺\", \"果\",\n                                  \"阝\", \"花\",\n                                  \"•\", \"耱\", \"嗜\", \"骰\", \"萋\", \"甄\", \"侍\", \"厦\", \"辌\", \"给\", \"健\", \"垧\", \"娩\", \"校\",\n                                  \"又\", \"临\",\n                                  \"揽\", \"犟\", \"蠢\", \"包\", \"檬\", \"穹\", \"燮\", \"札\", \"翏\", \"领\", \"深\", \"诶\", \"窒\", \"鸷\",\n                                  \"统\", \"肾\",\n                                  \"澍\", \"畹\", \"职\", \"蝟\", \"眬\", \"旎\", \"朘\", \"眠\", \"篚\", \"贼\", \"貴\", \"＃\", \"茆\", \"磬\",\n                                  \"①\", \"祀\",\n                                  \"坞\", \"盯\", \"苹\", \"痼\", \"耪\", \"狺\", \"妓\", \"湨\", \"動\", \"渚\", \"售\", \"鸶\", \"霄\", \"某\",\n                                  \"×\", \"铀\",\n                                  \"桓\", \"脲\", \"心\", \"节\", \"［\", \"蜩\", \"剐\", \"猜\", \"盂\", \"穿\", \"洮\", \"坜\", \"掷\", \"坐\",\n                                  \"烜\", \"冶\",\n                                  \"袍\", \"穴\", \"偷\", \"槽\", \"面\", \"媛\", \"撙\", \"孩\", \"询\", \"苈\", \"橙\", \"恙\", \"吉\", \"燈\",\n                                  \"暇\", \"杋\",\n                                  \"後\", \"璇\", \"喟\", \"妪\", \"湄\", \"贡\", \"兮\", \"楫\", \"锗\", \"肮\", \"圉\", \"参\", \"烃\", \"葩\",\n                                  \"骀\", \"锖\",\n                                  \"犿\", \"恼\", \"麯\", \"牮\", \"溱\", \"俵\", \"祢\", \"割\", \"羲\", \"中\", \"博\", \"膦\", \"7\", \"钙\",\n                                  \"耸\", \"蚋\",\n                                  \"嘬\", \"逝\", \"瓿\", \"且\", \"苗\", \"屑\", \"華\", \"糯\", \"吓\", \"陇\", \".\", \"魆\", \"d\", \"拶\",\n                                  \"箜\", \"澳\",\n                                  \"蘼\", \"垸\", \"钅\", \"樯\", \"侑\", \"娼\", \"赛\", \"恪\", \"击\", \"濮\", \"隔\", \"似\", \"惜\", \"滤\",\n                                  \"培\", \"谩\",\n                                  \"坝\", \"煙\", \"馕\", \"茡\", \"颼\", \"啡\", \"强\", \"巡\", \"糗\", \"芙\", \"骒\", \"常\", \"鳔\", \"楣\",\n                                  \"嫩\", \"师\",\n                                  \"攀\", \"旭\", \"茠\", \"吏\", \"剌\", \"露\", \"把\", \"携\", \"忘\", \"软\", \"荩\", \"弧\", \"锩\", \"僦\",\n                                  \"掘\", \"仓\",\n                                  \"嵚\", \"沲\", \"傅\", \"蝴\", \"爵\", \"纪\", \"薮\", \"參\", \"荀\", \"珙\", \"逞\", \"蹙\", \"徉\", \"佶\",\n                                  \"庹\", \"弢\",\n                                  \"锞\", \"想\", \"窕\", \"躬\", \"蚡\", \"闸\", \"难\", \"妃\", \"唶\", \"V\", \"蚂\", \"酐\", \"]\", \"羁\",\n                                  \"土\", \"敏\",\n                                  \"蝻\", \"赎\", \"闹\", \"铷\", \"脬\", \"攫\", \"椐\", \"橹\", \"(\", \"暨\", \"剁\", \"灵\", \"咫\", \"苻\",\n                                  \"赈\", \"萝\",\n                                  \"鹮\", \"颛\", \"勿\", \"臆\", \"福\", \"蝠\", \"烺\", \"跤\", \"垓\", \"庋\", \"鏊\", \"彭\", \"碚\", \"膂\",\n                                  \"鐘\", \"鸹\",\n                                  \"择\", \"疫\", \"暌\", \"胙\", \"翘\", \"仞\", \"實\", \"猫\", \"嘹\", \"坟\", \"泺\", \"靽\", \"仟\", \"鲋\",\n                                  \"畅\", \"箪\",\n                                  \"箩\", \"星\", \"辍\", \"餐\", \"伍\", \"狃\", \"蹐\", \"芴\", \"龋\", \"仨\", \"狩\", \"诌\", \"媚\", \"琚\",\n                                  \"❤\", \"鉰\",\n                                  \"仔\", \"忝\", \"垅\", \"嗤\", \"氅\", \"填\", \"詹\", \"诿\", \"皑\", \"椅\", \"鲭\", \"繪\", \"碑\", \"选\",\n                                  \"廠\", \"嶓\",\n                                  \"迮\", \"唠\", \"赏\", \"│\", \"泍\", \"姑\", \"晦\", \"直\", \"艾\", \"邂\", \"裝\", \"郊\", \"疡\", \"」\",\n                                  \"鸲\", \"兕\",\n                                  \"县\", \"邡\", \"麤\", \"旧\", \"壶\", \"礼\", \"梭\", \"铔\", \"玕\", \"硬\", \"后\", \"馅\", \"窠\", \"俊\",\n                                  \"犾\", \"槭\",\n                                  \"姨\", \"妨\", \"幡\", \"沿\", \"帮\", \"爿\", \"褊\", \"淅\", \"册\", \"诔\", \"使\", \"唢\", \"族\", \"逮\",\n                                  \"蟋\", \"掣\",\n                                  \"红\", \"颔\", \"闲\", \"咧\", \"衍\", \"矛\", \"蹜\", \"抱\", \"雀\", \"箴\", \"雙\", \"茁\", \"聲\", \"芰\",\n                                  \"瘤\", \"落\",\n                                  \"峨\", \"秆\", \"献\", \"霭\", \"胰\", \"墁\", \"柽\", \"跛\", \"阼\", \"菝\", \"谗\", \"蠊\", \"懋\", \"蔷\",\n                                  \"拃\", \"岱\",\n                                  \"戡\", \"逡\", \"背\", \"克\", \"棱\", \"栲\", \"乖\", \"橄\", \"炭\", \"萱\", \"胲\", \"摺\", \"殆\", \"魍\",\n                                  \"宾\", \"拢\",\n                                  \"姁\", \"祲\", \"·\", \"歹\", \"胆\", \"爱\", \"旰\", \"抢\", \"匜\", \"硚\", \"愈\", \"跳\", \"▲\", \"跪\",\n                                  \"網\", \"糈\",\n                                  \"維\", \"痹\", \"娃\", \"疸\", \"痔\", \"褙\", \"芭\", \"鹜\", \"猷\", \"檩\", \"吨\", \"淖\", \"竟\", \"呱\",\n                                  \"瘠\", \"奢\",\n                                  \"呐\", \"扞\", \"灼\", \"家\", \"饿\", \"玻\", \"倾\", \"锚\", \"遗\", \"赝\", \"去\", \"跣\", \"纬\", \"玢\",\n                                  \"梆\", \"陉\",\n                                  \"屎\", \"上\", \"酆\", \"搤\", \"併\", \"腌\", \"避\", \"禹\", \"绅\", \"帆\", \"英\", \"区\", \"交\", \"▪\",\n                                  \"巧\", \"豹\",\n                                  \"游\", \"清\", \"荧\", \"娀\", \"訓\", \"尾\", \"觫\", \"梢\", \"均\", \"忤\", \"继\", \"變\", \"喽\", \"尉\",\n                                  \"骚\", \"趸\",\n                                  \"馃\", \"石\", \"置\", \"毡\", \"竴\", \"龄\", \"掭\", \"骟\", \"堡\", \"确\", \"街\", \"沌\", \"恨\", \"壮\",\n                                  \"弄\", \"鞴\",\n                                  \"剿\", \"貅\", \"路\", \"杠\", \"豚\", \"澜\", \"靼\", \"擐\", \"租\", \"媪\", \"彖\", \"逢\", \"撺\", \"盗\",\n                                  \"呑\", \"锥\",\n                                  \"栎\", \"唧\", \"翩\", \"倥\", \"虽\", \"郏\", \"钒\", \"雉\", \"捒\", \"官\", \"酷\", \"樽\", \"房\", \"屣\",\n                                  \"堌\", \"蒍\",\n                                  \"悌\", \"④\", \"蛳\", \"俱\", \"慢\", \"筇\", \"框\", \"椽\", \"债\", \"吭\", \"柱\", \"夤\", \"嘈\", \"骺\",\n                                  \"趹\", \"刓\",\n                                  \"豕\", \"噢\", \"J\", \"论\", \"俞\", \"仙\", \"碰\", \"经\", \"铋\", \"⑤\", \"顽\", \"曲\", \"得\", \"汪\",\n                                  \"浒\", \"际\",\n                                  \"嘏\", \"扮\", \"祊\", \"嵋\", \"‘\", \"牒\", \"禮\", \"粒\", \"籀\", \"闱\", \"刍\", \"邕\", \"美\", \"苫\",\n                                  \"靺\", \"铹\",\n                                  \"莰\", \"蔑\", \"敵\", \"逑\", \"锬\", \"宸\", \"鞥\", \"匝\", \"褀\", \"菅\", \"逊\", \"脱\", \"晔\", \"罾\",\n                                  \"郝\", \"恰\",\n                                  \"丟\", \"芩\", \"枷\", \"鹩\", \"a\", \"夙\", \"述\", \"钢\", \"瀵\", \"铧\", \"翱\", \"尧\", \"醮\", \"&\",\n                                  \"鳐\", \"懲\",\n                                  \"濩\", \"树\", \"劵\", \"虾\", \"砚\", \"腄\", \"罟\", \"硖\", \"崩\", \"埘\", \"╱\", \"血\", \"觯\", \"巂\",\n                                  \"栀\", \"萏\",\n                                  \"雪\", \"眵\", \"白\", \"新\", \"靶\", \"猪\", \"亻\", \"窬\", \"Ⅳ\", \"麽\", \"遄\", \"沏\", \"茅\", \"笋\",\n                                  \"甬\", \"潔\",\n                                  \"悛\", \"幕\", \"鹤\", \"悴\", \"耻\", \"觜\", \"滞\", \"己\", \"鏂\", \"肛\", \"婤\", \"嘞\", \"蘸\", \"胴\",\n                                  \"柿\", \"穗\",\n                                  \"咯\", \"嵕\", \"蜣\", \"僰\", \"玃\", \"细\", \"▏\", \"戗\", \"尘\", \"仄\", \"子\", \"历\", \"翌\", \"烀\",\n                                  \"晞\", \"桷\",\n                                  \"藕\", \"啄\", \"腐\", \"瘥\", \"诣\", \"彗\", \"捭\", \"懑\", \"陛\", \"傥\", \"沚\", \"贯\", \"﹑\", \"雒\",\n                                  \"航\", \"跬\",\n                                  \"晓\", \"赢\", \"鸭\", \"臊\", \"闳\", \"稲\", \"阁\", \"鼋\", \"‰\", \"个\", \"農\", \"匮\", \"辚\", \"滗\",\n                                  \"桢\", \"詈\",\n                                  \"绗\", \"馇\", \"蜓\", \"专\", \"余\", \"鳉\", \"稚\", \"午\", \"珍\", \"癃\", \"钵\", \"档\", \"颍\", \"厕\",\n                                  \"岭\", \"祓\",\n                                  \"诂\", \"襙\", \"炙\", \"枯\", \"锦\", \"袤\", \"桊\", \"嗓\", \"䘵\", \"嫂\", \"丰\", \"苎\", \"梦\", \"早\",\n                                  \"菱\", \"钱\",\n                                  \"灯\", \"钮\", \"锓\", \"豐\", \"蝤\", \"协\", \"h\", \"鼓\", \"燕\", \"覺\", \"涮\", \"呗\", \"専\", \"篓\",\n                                  \"玷\", \"褓\",\n                                  \"从\", \"鲍\", \"羧\", \"俭\", \"萌\", \"樣\", \"颜\", \"谷\", \"夹\", \"囫\", \"』\", \"缙\", \"鹰\", \"条\",\n                                  \"状\", \"沨\",\n                                  \"因\", \"莺\", \"楼\", \"扰\", \"禢\", \"砧\", \"埔\", \"纩\", \"臭\", \"茶\", \"妹\", \"莼\", \"境\", \"山\",\n                                  \"诘\", \"蒌\",\n                                  \"唤\", \"仃\", \"眄\", \"田\", \"畼\", \"缱\", \"祘\", \"痴\", \"揍\", \"猾\", \"甙\", \"躲\", \"返\", \"砝\",\n                                  \"叽\", \"苟\",\n                                  \"肭\", \"悖\", \"嫣\", \"凋\", \"踞\", \"勢\", \"弃\", \"般\", \"赤\", \"佣\", \"嘘\", \"智\", \"寒\", \"旆\",\n                                  \"咎\", \"戊\",\n                                  \"温\", \"昙\", \"蝄\", \"掉\", \"冤\", \"凍\", \"一\", \"鋼\", \"茏\", \"兼\", \"昃\", \"峤\", \"挟\", \"０\",\n                                  \"顾\", \"颅\",\n                                  \"*\", \"遆\", \"硅\", \"烯\", \"眊\", \"鳘\", \"下\", \"雾\", \"癖\", \"贮\", \"缴\", \"升\", \"劲\", \"婞\",\n                                  \"掇\", \"梯\",\n                                  \"壬\", \"撮\", \"绑\", \"氣\", \"薤\", \"兔\", \"赟\", \"漕\", \"签\", \"顇\", \"砭\", \"鸼\", \"明\", \"佧\",\n                                  \"鹗\", \"哉\",\n                                  \"席\", \"趁\", \"砖\", \"澌\", \"撤\", \"萨\", \"熔\", \"蚝\", \"狮\", \"夔\", \"介\", \"青\", \"喈\", \"郂\",\n                                  \"埝\", \"狗\",\n                                  \"哚\", \"咪\", \"材\", \"跑\", \"炗\", \"龉\", \"髓\", \"衣\", \"觀\", \"淋\", \"寄\", \"羮\", \"抵\", \"恁\",\n                                  \"藿\", \"蜢\",\n                                  \"甜\", \"兽\", \"洒\", \"眶\", \"薯\", \"绷\", \"颀\", \"骑\", \"鲻\", \"｜\", \"q\", \"繄\", \"丝\", \"焙\",\n                                  \"瑕\", \"童\",\n                                  \"豸\", \"讨\", \"钿\", \"艮\", \"踧\", \"幽\", \"焰\", \"宽\", \"址\", \"鸩\", \"堉\", \"音\", \"擅\", \"铞\",\n                                  \"埌\", \"宙\",\n                                  \"_\", \"钥\", \"承\", \"率\", \"噬\", \"凌\", \"程\", \"蚕\", \"嘣\", \"饭\", \"橉\", \"径\", \"１\", \"鄏\",\n                                  \"袜\", \"孙\",\n                                  \"樊\", \"窦\", \"牦\", \"歡\", \"罕\", \"蓉\", \"诩\", \"㧎\", \"责\", \"豢\", \"逅\", \"甘\", \"礶\", \"镥\",\n                                  \"穂\", \"到\",\n                                  \"檑\", \"皇\", \"泖\", \"腱\", \"郤\", \"竞\", \"竽\", \"溴\", \"木\", \"蛀\", \"蛟\", \"燧\", \"鹳\", \"谵\",\n                                  \"钳\", \"魔\",\n                                  \"链\", \"咆\", \"荡\", \"婳\", \"冢\", \"鲧\", \"昝\", \"※\", \"倫\", \"才\", \"簿\", \"醫\", \"吕\", \"姗\",\n                                  \"Ｌ\", \"俺\",\n                                  \"隳\", \"鮮\", \"衩\", \"鲆\", \"崟\", \"鲹\", \"岗\", \"镇\", \"嗄\", \"硪\", \"盎\", \"氟\", \"笪\", \"今\",\n                                  \"公\", \"尽\",\n                                  \"佬\", \"骧\", \"驻\", \"翼\", \"咚\", \"盱\", \"镎\", \"浈\", \"谅\", \"洟\", \"嘭\", \"跶\", \"蔹\", \"咭\",\n                                  \"妁\", \"殚\",\n                                  \"砷\", \"购\", \"犸\", \"哄\", \"笸\", \"喂\", \"赋\", \"倓\", \"项\", \"臧\", \"梳\", \"笏\", \"鹝\", \"昭\",\n                                  \"罿\", \"镄\",\n                                  \"П\", \"湯\", \"U\", \"绐\", \"绂\", \"鸬\", \"毐\", \"台\", \"鈴\", \"憾\", \"痰\", \"缭\", \"绒\", \"赁\",\n                                  \"效\", \"哝\",\n                                  \"─\", \"偆\", \"泗\", \"谇\", \"貘\", \"搜\", \"阗\", \"個\", \"艟\", \"嗔\", \"正\", \"筛\", \"鼷\", \"摛\",\n                                  \"馀\", \"坡\",\n                                  \"卓\", \"厥\", \"睾\", \"雯\", \"篷\", \"狰\", \"掀\", \"夫\", \"靛\", \"伻\", \"茇\", \"顧\", \"猕\", \"占\",\n                                  \"俟\", \"兄\",\n                                  \"垡\", \"兆\", \"铃\", \"屙\", \"轵\", \"銮\", \"磲\", \"桤\", \"跷\", \"缳\", \"粘\", \"袢\", \"尬\", \"獘\",\n                                  \"社\", \"彬\",\n                                  \"哨\", \"煳\", \"莊\", \"教\", \"鸸\", \"窖\", \"晰\", \"捻\", \"环\", \"廿\", \"驶\", \"椠\", \"熟\", \"赓\",\n                                  \"挥\", \"兵\",\n                                  \"洚\", \"桧\", \"埼\", \"嘀\", \"哎\", \"柞\", \"悄\", \"调\", \"洼\", \"蛇\", \"铬\", \"蝇\", \"倆\", \"谂\",\n                                  \"姻\", \"怕\",\n                                  \"瑙\", \"算\", \"惮\", \"遥\", \"惟\", \"甫\", \"玺\", \"袈\", \"税\", \"玟\", \"械\", \"擗\", \"淤\", \"溟\",\n                                  \"揞\", \"纲\",\n                                  \"谤\", \"條\", \"翕\", \"荛\", \"忾\", \"馿\", \"糖\", \"檗\", \"垱\", \"┐\", \"躜\", \"缒\", \"您\", \"蹶\",\n                                  \"合\", \"数\",\n                                  \"斟\", \"粲\", \"玖\", \"淞\", \"孰\", \"觎\", \"M\", \"嫪\", \"毽\", \"桩\", \"蹦\", \"亹\", \"胾\", \"亲\",\n                                  \"痉\", \"莙\",\n                                  \"捐\", \"烁\", \"瓣\", \"邀\", \"但\", \"误\", \"饻\", \"妄\", \"镱\", \"民\", \"嗳\", \"竦\", \"柰\", \"脒\",\n                                  \"斓\", \"瞟\",\n                                  \"拱\", \"霾\", \"粜\", \"腽\", \"咬\", \"唿\", \"礻\", \"y\", \"褒\", \"郪\", \"熰\", \"梻\", \"甭\", \"处\",\n                                  \"拖\", \"蜉\",\n                                  \"鄱\", \"絲\", \"宠\", \"瞵\", \"荷\", \"靓\", \"喻\", \"阢\", \"伫\", \"担\", \"朐\", \"墙\", \"儣\", \"胄\",\n                                  \"簏\", \"皆\",\n                                  \"踌\", \"萃\", \"命\", \"滟\", \"睹\", \"叁\", \"蟮\", \"東\", \"﹖\", \"式\", \"營\", \"疠\", \"醳\", \"尔\",\n                                  \"購\", \"吒\",\n                                  \"柴\", \"途\", \"力\", \"疰\", \"寳\", \"萬\", \"挨\", \"碥\", \"牍\", \"嘻\", \"柃\", \"剡\", \"徝\", \"杖\",\n                                  \"螺\", \"祈\",\n                                  \"産\", \"煽\", \"讽\", \"瞭\", \"由\", \"牀\", \"涉\", \"暴\", \"枚\", \"仰\", \"它\", \"胤\", \"驯\", \"港\",\n                                  \"寵\", \"熄\",\n                                  \"蛮\", \"务\", \"殃\", \"亸\", \"涢\", \"妫\", \"粥\", \"扦\", \"寺\", \"抿\", \"湃\", \"C\", \"脚\", \"涸\",\n                                  \"动\", \"務\",\n                                  \"镭\", \"检\", \"釂\", \"耳\", \"榦\", \"怆\", \"氨\", \"瘳\", \"钽\", \"牚\", \"负\", \"纂\", \"獬\", \"息\",\n                                  \"婄\", \"襞\",\n                                  \"囹\", \"酰\", \"扑\", \"臛\", \"价\", \"褡\", \"篼\", \"媢\", \"酊\", \"腋\", \"愣\", \"垯\", \"喃\", \"牾\",\n                                  \"犨\", \"蜂\",\n                                  \"诹\", \"迂\", \"槑\", \"好\", \"褰\", \"咝\", \"③\", \"劐\", \"骄\", \"腉\", \"仕\", \"叵\", \"磅\", \"金\",\n                                  \"皁\", \"勍\",\n                                  \"煮\", \"鍪\", \"筚\", \"吲\", \"艰\", \"床\", \"叛\", \"﹔\", \"喜\", \"齑\", \"昧\", \"乎\", \"谲\", \"匈\",\n                                  \"麒\", \"身\",\n                                  \"唑\", \"鲤\", \"栂\", \"垭\", \"殪\", \"沪\", \"苌\", \"濡\", \"蒎\", \"遏\", \"®\", \"质\", \"纫\", \"罐\",\n                                  \"瞍\", \"柄\",\n                                  \"呼\", \"锱\", \"盔\", \"搋\", \"烛\", \"喉\", \"奈\", \"赦\", \"轘\", \"鉴\", \"瓒\", \"铰\", \"恽\", \"腠\",\n                                  \"韶\", \"胼\",\n                                  \"侄\", \"珂\", \"鹕\", \"䝉\", \"呤\", \"椁\", \"岳\", \"汲\", \"疤\", \"绊\", \"涂\", \"乾\", \"噎\", \"兑\",\n                                  \"絜\", \"嘧\",\n                                  \"蚯\", \"们\", \"蝉\", \"玛\", \"魁\", \"黻\", \"振\", \"冥\", \"报\", \"窟\", \"笱\", \"喊\", \"瓴\", \"喾\",\n                                  \"説\", \"雹\",\n                                  \"恫\", \"ａ\", \"颧\", \"給\", \"宅\", \"鞧\", \"嬷\", \"鼾\", \"笔\", \"鲉\", \"匹\", \"蠕\", \"愍\", \"氽\",\n                                  \"赐\", \"畔\",\n                                  \"絪\", \"洴\", \"审\", \"窂\", \"褔\", \"狯\", \"谑\", \"毳\", \"右\", \"疣\", \"鲙\", \"堃\", \"瓜\", \"…\",\n                                  \"崆\", \"钫\",\n                                  \"樭\", \"鲛\", \"砂\", \"筋\", \"犏\", \"乱\", \"入\", \"浐\", \"膙\", \"厚\", \"獗\", \"覌\", \"焦\", \"罃\",\n                                  \"宬\", \"隍\",\n                                  \"荃\", \"醜\", \"厉\", \"艇\", \"娟\", \"樂\", \"筲\", \"洛\", \"唼\", \"诜\", \"馑\", \"香\", \"缛\", \"运\",\n                                  \"祟\", \"踩\",\n                                  \"陲\", \"叔\", \"潞\", \"二\", \"搠\", \"祼\", \"瀘\", \"蒋\", \"樗\", \"麦\", \"鸦\", \"棻\", \"古\", \"鹠\",\n                                  \"怊\", \"裾\",\n                                  \"够\", \"璧\", \"晡\", \"擘\", \"毂\", \"御\", \"葚\", \"忱\", \"觞\", \"瑁\", \"唇\", \"罡\", \"剽\", \"殡\",\n                                  \"沛\", \"帻\",\n                                  \"举\", \"瞓\", \"谬\", \"溝\", \"言\", \"哽\", \"婿\", \"猿\", \"跗\", \"獴\", \"俜\", \"呙\", \"弗\", \"凿\",\n                                  \"窭\", \"铌\",\n                                  \"友\", \"唉\", \"怫\", \"荘\"]\n    \n    def __repr__(self) -> str:\n        return f\"CharsetManager(size={len(self.charset)}, range_size={len(self.charset_range)})\"\n    \n    def __str__(self) -> str:\n        return f\"CharsetManager with {len(self.charset)} characters, {len(self.charset_range)} in range\"\n"
  },
  {
    "path": "ddddocr/models/model_loader.py",
    "content": "# coding=utf-8\n\"\"\"\n模型加载器模块\n负责ONNX模型的加载和管理\n\"\"\"\n\nimport os\nimport json\nfrom typing import List, Optional, Dict, Any\nimport onnxruntime\n\nfrom ..utils.exceptions import ModelLoadError\nfrom ..utils.validators import validate_model_config\n\n\nclass ModelLoader:\n    \"\"\"ONNX模型加载器\"\"\"\n    \n    def __init__(self, use_gpu: bool = False, device_id: int = 0):\n        \"\"\"\n        初始化模型加载器\n        \n        Args:\n            use_gpu: 是否使用GPU\n            device_id: GPU设备ID\n        \"\"\"\n        self.use_gpu = use_gpu\n        self.device_id = device_id\n        self._setup_providers()\n    \n    def _setup_providers(self) -> None:\n        \"\"\"设置ONNX运行时提供者\"\"\"\n        try:\n            if self.use_gpu:\n                # GPU提供者\n                self.providers = [\n                    ('CUDAExecutionProvider', {\n                        'device_id': self.device_id,\n                        'arena_extend_strategy': 'kNextPowerOfTwo',\n                        'gpu_mem_limit': 2 * 1024 * 1024 * 1024,  # 2GB\n                        'cudnn_conv_algo_search': 'EXHAUSTIVE',\n                        'do_copy_in_default_stream': True,\n                    }),\n                    'CPUExecutionProvider'\n                ]\n            else:\n                # CPU提供者\n                self.providers = ['CPUExecutionProvider']\n        except Exception as e:\n            # 如果GPU设置失败，回退到CPU\n            self.providers = ['CPUExecutionProvider']\n            if self.use_gpu:\n                print(f\"GPU设置失败，回退到CPU模式: {str(e)}\")\n    \n    def load_model(self, model_path: str) -> onnxruntime.InferenceSession:\n        \"\"\"\n        加载ONNX模型\n        \n        Args:\n            model_path: 模型文件路径\n            \n        Returns:\n            ONNX推理会话对象\n            \n        Raises:\n            ModelLoadError: 当模型加载失败时\n        \"\"\"\n        try:\n            if not os.path.exists(model_path):\n                raise ModelLoadError(f\"模型文件不存在: {model_path}\")\n            \n            # 设置ONNX运行时日志级别\n            onnxruntime.set_default_logger_severity(3)\n            \n            # 创建推理会话\n            session = onnxruntime.InferenceSession(model_path, providers=self.providers)\n            \n            return session\n            \n        except Exception as e:\n            raise ModelLoadError(f\"模型加载失败: {str(e)}\") from e\n    \n    def get_model_info(self, session: onnxruntime.InferenceSession) -> Dict[str, Any]:\n        \"\"\"\n        获取模型信息\n        \n        Args:\n            session: ONNX推理会话\n            \n        Returns:\n            模型信息字典\n        \"\"\"\n        try:\n            input_info = []\n            for input_meta in session.get_inputs():\n                input_info.append({\n                    'name': input_meta.name,\n                    'shape': input_meta.shape,\n                    'type': input_meta.type\n                })\n            \n            output_info = []\n            for output_meta in session.get_outputs():\n                output_info.append({\n                    'name': output_meta.name,\n                    'shape': output_meta.shape,\n                    'type': output_meta.type\n                })\n            \n            return {\n                'inputs': input_info,\n                'outputs': output_info,\n                'providers': session.get_providers()\n            }\n            \n        except Exception as e:\n            return {'error': str(e)}\n    \n    def load_ocr_model(self, old: bool = False, beta: bool = False, \n                      import_onnx_path: str = \"\") -> onnxruntime.InferenceSession:\n        \"\"\"\n        加载OCR模型\n        \n        Args:\n            old: 是否使用旧版模型\n            beta: 是否使用beta版模型\n            import_onnx_path: 自定义模型路径\n            \n        Returns:\n            ONNX推理会话对象\n            \n        Raises:\n            ModelLoadError: 当模型加载失败时\n        \"\"\"\n        try:\n            if import_onnx_path:\n                model_path = import_onnx_path\n            else:\n                base_dir = os.path.dirname(os.path.dirname(__file__))\n                if old:\n                    model_path = os.path.join(base_dir, 'common_old.onnx')\n                elif beta:\n                    model_path = os.path.join(base_dir, 'common.onnx')\n                else:\n                    model_path = os.path.join(base_dir, 'common_old.onnx')\n            \n            return self.load_model(model_path)\n            \n        except Exception as e:\n            raise ModelLoadError(f\"OCR模型加载失败: {str(e)}\") from e\n    \n    def load_detection_model(self) -> onnxruntime.InferenceSession:\n        \"\"\"\n        加载目标检测模型\n        \n        Returns:\n            ONNX推理会话对象\n            \n        Raises:\n            ModelLoadError: 当模型加载失败时\n        \"\"\"\n        try:\n            base_dir = os.path.dirname(os.path.dirname(__file__))\n            model_path = os.path.join(base_dir, 'common_det.onnx')\n            return self.load_model(model_path)\n            \n        except Exception as e:\n            raise ModelLoadError(f\"检测模型加载失败: {str(e)}\") from e\n    \n    def load_custom_model(self, model_path: str, charset_path: str) -> tuple:\n        \"\"\"\n        加载自定义模型和字符集\n        \n        Args:\n            model_path: 模型文件路径\n            charset_path: 字符集文件路径\n            \n        Returns:\n            (推理会话, 字符集信息)\n            \n        Raises:\n            ModelLoadError: 当加载失败时\n        \"\"\"\n        try:\n            # 加载模型\n            session = self.load_model(model_path)\n            \n            # 加载字符集信息\n            if not os.path.exists(charset_path):\n                raise ModelLoadError(f\"字符集文件不存在: {charset_path}\")\n            \n            with open(charset_path, 'r', encoding=\"utf-8\") as f:\n                charset_info = json.loads(f.read())\n            \n            # 验证字符集信息格式\n            required_keys = ['charset', 'word', 'image', 'channel']\n            for key in required_keys:\n                if key not in charset_info:\n                    raise ModelLoadError(f\"字符集文件缺少必需字段: {key}\")\n            \n            return session, charset_info\n            \n        except Exception as e:\n            raise ModelLoadError(f\"自定义模型加载失败: {str(e)}\") from e\n    \n    def validate_model_compatibility(self, session: onnxruntime.InferenceSession, \n                                   expected_input_shape: Optional[List[int]] = None) -> bool:\n        \"\"\"\n        验证模型兼容性\n        \n        Args:\n            session: ONNX推理会话\n            expected_input_shape: 期望的输入形状\n            \n        Returns:\n            是否兼容\n        \"\"\"\n        try:\n            inputs = session.get_inputs()\n            if len(inputs) == 0:\n                return False\n            \n            if expected_input_shape:\n                input_shape = inputs[0].shape\n                # 检查形状兼容性（忽略batch维度）\n                if len(input_shape) != len(expected_input_shape):\n                    return False\n                \n                for i, (actual, expected) in enumerate(zip(input_shape[1:], expected_input_shape[1:])):\n                    if expected != -1 and actual != expected:\n                        return False\n            \n            return True\n            \n        except Exception:\n            return False\n    \n    def get_available_providers(self) -> List[str]:\n        \"\"\"\n        获取可用的执行提供者\n        \n        Returns:\n            可用提供者列表\n        \"\"\"\n        return onnxruntime.get_available_providers()\n    \n    def switch_provider(self, use_gpu: bool, device_id: int = 0) -> None:\n        \"\"\"\n        切换执行提供者\n        \n        Args:\n            use_gpu: 是否使用GPU\n            device_id: GPU设备ID\n        \"\"\"\n        self.use_gpu = use_gpu\n        self.device_id = device_id\n        self._setup_providers()\n    \n    def __repr__(self) -> str:\n        return f\"ModelLoader(use_gpu={self.use_gpu}, device_id={self.device_id})\"\n"
  },
  {
    "path": "ddddocr/preprocessing/__init__.py",
    "content": "# coding=utf-8\n\"\"\"\n图像预处理模块\n提供颜色过滤、图像增强等预处理功能\n\"\"\"\n\nfrom .color_filter import ColorFilter\nfrom .image_processor import ImageProcessor\n\n__all__ = [\n    'ColorFilter',\n    'ImageProcessor'\n]\n"
  },
  {
    "path": "ddddocr/preprocessing/color_filter.py",
    "content": "# coding=utf-8\n\"\"\"\n颜色过滤模块\n提供基于HSV颜色空间的图像颜色过滤功能\n\"\"\"\n\nfrom typing import List, Tuple, Optional, Union\nimport numpy as np\nfrom PIL import Image\n\nfrom ..utils.exceptions import safe_import_opencv, ImageProcessError\nfrom ..utils.validators import validate_color_filter_params\nfrom ..utils.image_io import image_to_numpy, numpy_to_image\n\n# 安全导入OpenCV\ncv2 = safe_import_opencv()\n\n\nclass ColorFilter:\n    \"\"\"图片颜色过滤器类，支持HSV颜色空间的颜色范围过滤\"\"\"\n    \n    # 内置常见颜色预设的HSV范围值\n    COLOR_PRESETS = {\n        'red': [((0, 50, 50), (10, 255, 255)), ((170, 50, 50), (180, 255, 255))],  # 红色需要两个范围\n        'blue': [((100, 50, 50), (130, 255, 255))],\n        'green': [((40, 50, 50), (80, 255, 255))],\n        'yellow': [((20, 50, 50), (40, 255, 255))],\n        'orange': [((10, 50, 50), (20, 255, 255))],\n        'purple': [((130, 50, 50), (170, 255, 255))],\n        'cyan': [((80, 50, 50), (100, 255, 255))],\n        'black': [((0, 0, 0), (180, 255, 50))],\n        'white': [((0, 0, 200), (180, 30, 255))],\n        'gray': [((0, 0, 50), (180, 30, 200))]\n    }\n    \n    def __init__(self, colors: Optional[List[str]] = None, \n                 custom_ranges: Optional[List[Tuple[Tuple[int, int, int], Tuple[int, int, int]]]] = None):\n        \"\"\"\n        初始化颜色过滤器\n        \n        Args:\n            colors: 预设颜色名称列表，如 ['red', 'blue']\n            custom_ranges: 自定义HSV范围列表，如 [((0,50,50), (10,255,255))]\n            \n        Raises:\n            ValueError: 当参数无效时\n        \"\"\"\n        # 验证输入参数\n        validate_color_filter_params(colors, custom_ranges)\n        \n        self.hsv_ranges = []\n        \n        if colors:\n            for color in colors:\n                color_lower = color.lower()\n                if color_lower in self.COLOR_PRESETS:\n                    self.hsv_ranges.extend(self.COLOR_PRESETS[color_lower])\n                else:\n                    available_colors = ', '.join(self.COLOR_PRESETS.keys())\n                    raise ValueError(f\"不支持的颜色预设: {color}。可用颜色: {available_colors}\")\n        \n        if custom_ranges:\n            self.hsv_ranges.extend(custom_ranges)\n        \n        if not self.hsv_ranges:\n            raise ValueError(\"必须指定colors或custom_ranges参数\")\n    \n    def filter_image(self, image: Union[Image.Image, np.ndarray]) -> Image.Image:\n        \"\"\"\n        对图片进行颜色过滤\n        \n        Args:\n            image: 输入图片（PIL.Image或numpy.ndarray）\n            \n        Returns:\n            过滤后的PIL Image对象\n            \n        Raises:\n            ImageProcessError: 当图片处理失败时\n        \"\"\"\n        try:\n            # 转换为numpy数组\n            if isinstance(image, Image.Image):\n                img_array = cv2.cvtColor(image_to_numpy(image, 'RGB'), cv2.COLOR_RGB2BGR)\n            else:\n                img_array = image.copy()\n            \n            # 转换到HSV颜色空间\n            hsv = cv2.cvtColor(img_array, cv2.COLOR_BGR2HSV)\n            \n            # 创建掩码\n            mask = np.zeros(hsv.shape[:2], dtype=np.uint8)\n            \n            for lower, upper in self.hsv_ranges:\n                # 创建当前颜色范围的掩码\n                range_mask = cv2.inRange(hsv, np.array(lower), np.array(upper))\n                # 合并到总掩码\n                mask = cv2.bitwise_or(mask, range_mask)\n            \n            # 应用掩码\n            result = cv2.bitwise_and(img_array, img_array, mask=mask)\n            \n            # 将背景设为白色\n            result[mask == 0] = [255, 255, 255]\n            \n            # 转换回PIL Image\n            result_rgb = cv2.cvtColor(result, cv2.COLOR_BGR2RGB)\n            return numpy_to_image(result_rgb, 'RGB')\n            \n        except Exception as e:\n            raise ImageProcessError(f\"颜色过滤处理失败: {str(e)}\") from e\n    \n    def get_mask(self, image: Union[Image.Image, np.ndarray]) -> np.ndarray:\n        \"\"\"\n        获取颜色过滤的掩码\n        \n        Args:\n            image: 输入图片\n            \n        Returns:\n            二值掩码数组\n            \n        Raises:\n            ImageProcessError: 当处理失败时\n        \"\"\"\n        try:\n            # 转换为numpy数组\n            if isinstance(image, Image.Image):\n                img_array = cv2.cvtColor(image_to_numpy(image, 'RGB'), cv2.COLOR_RGB2BGR)\n            else:\n                img_array = image.copy()\n            \n            # 转换到HSV颜色空间\n            hsv = cv2.cvtColor(img_array, cv2.COLOR_BGR2HSV)\n            \n            # 创建掩码\n            mask = np.zeros(hsv.shape[:2], dtype=np.uint8)\n            \n            for lower, upper in self.hsv_ranges:\n                # 创建当前颜色范围的掩码\n                range_mask = cv2.inRange(hsv, np.array(lower), np.array(upper))\n                # 合并到总掩码\n                mask = cv2.bitwise_or(mask, range_mask)\n            \n            return mask\n            \n        except Exception as e:\n            raise ImageProcessError(f\"掩码生成失败: {str(e)}\") from e\n    \n    def add_color_range(self, lower: Tuple[int, int, int], upper: Tuple[int, int, int]) -> None:\n        \"\"\"\n        添加自定义颜色范围\n        \n        Args:\n            lower: HSV下界\n            upper: HSV上界\n        \"\"\"\n        validate_color_filter_params(None, [(lower, upper)])\n        self.hsv_ranges.append((lower, upper))\n    \n    def add_preset_color(self, color: str) -> None:\n        \"\"\"\n        添加预设颜色\n        \n        Args:\n            color: 预设颜色名称\n            \n        Raises:\n            ValueError: 当颜色名称不存在时\n        \"\"\"\n        color_lower = color.lower()\n        if color_lower in self.COLOR_PRESETS:\n            self.hsv_ranges.extend(self.COLOR_PRESETS[color_lower])\n        else:\n            available_colors = ', '.join(self.COLOR_PRESETS.keys())\n            raise ValueError(f\"不支持的颜色预设: {color}。可用颜色: {available_colors}\")\n    \n    def clear_ranges(self) -> None:\n        \"\"\"清空所有颜色范围\"\"\"\n        self.hsv_ranges.clear()\n    \n    def get_ranges(self) -> List[Tuple[Tuple[int, int, int], Tuple[int, int, int]]]:\n        \"\"\"\n        获取当前所有颜色范围\n        \n        Returns:\n            颜色范围列表\n        \"\"\"\n        return self.hsv_ranges.copy()\n    \n    @classmethod\n    def get_available_colors(cls) -> List[str]:\n        \"\"\"\n        获取所有可用的预设颜色名称\n        \n        Returns:\n            可用颜色名称列表\n        \"\"\"\n        return list(cls.COLOR_PRESETS.keys())\n    \n    @classmethod\n    def get_color_range(cls, color: str) -> List[Tuple[Tuple[int, int, int], Tuple[int, int, int]]]:\n        \"\"\"\n        获取指定颜色的HSV范围\n        \n        Args:\n            color: 颜色名称\n            \n        Returns:\n            颜色的HSV范围列表\n            \n        Raises:\n            ValueError: 当颜色名称不存在时\n        \"\"\"\n        color_lower = color.lower()\n        if color_lower in cls.COLOR_PRESETS:\n            return cls.COLOR_PRESETS[color_lower].copy()\n        else:\n            available_colors = ', '.join(cls.COLOR_PRESETS.keys())\n            raise ValueError(f\"不支持的颜色预设: {color}。可用颜色: {available_colors}\")\n    \n    def __repr__(self) -> str:\n        return f\"ColorFilter(ranges={len(self.hsv_ranges)})\"\n    \n    def __str__(self) -> str:\n        return f\"ColorFilter with {len(self.hsv_ranges)} color ranges\"\n"
  },
  {
    "path": "ddddocr/preprocessing/image_processor.py",
    "content": "# coding=utf-8\n\"\"\"\n图像处理模块\n提供图像预处理、增强、变换等功能\n\"\"\"\n\nfrom typing import Tuple, Union, Optional\nimport numpy as np\nfrom PIL import Image\n\nfrom ..utils.exceptions import safe_import_opencv, ImageProcessError\nfrom ..utils.image_io import image_to_numpy, numpy_to_image, png_rgba_black_preprocess\n\n# 安全导入OpenCV\ncv2 = safe_import_opencv()\n\n\nclass ImageProcessor:\n    \"\"\"图像处理器类，提供各种图像预处理功能\"\"\"\n    \n    @staticmethod\n    def resize_image(image: Image.Image, target_size: Tuple[int, int], \n                    keep_aspect_ratio: bool = False, \n                    resample: int = Image.LANCZOS) -> Image.Image:\n        \"\"\"\n        调整图像尺寸\n        \n        Args:\n            image: 输入图像\n            target_size: 目标尺寸 (width, height)\n            keep_aspect_ratio: 是否保持宽高比\n            resample: 重采样方法\n            \n        Returns:\n            调整尺寸后的图像\n            \n        Raises:\n            ImageProcessError: 当处理失败时\n        \"\"\"\n        try:\n            if keep_aspect_ratio:\n                # 计算保持宽高比的尺寸\n                original_width, original_height = image.size\n                target_width, target_height = target_size\n                \n                # 计算缩放比例\n                width_ratio = target_width / original_width\n                height_ratio = target_height / original_height\n                scale_ratio = min(width_ratio, height_ratio)\n                \n                # 计算新尺寸\n                new_width = int(original_width * scale_ratio)\n                new_height = int(original_height * scale_ratio)\n                \n                return image.resize((new_width, new_height), resample)\n            else:\n                return image.resize(target_size, resample)\n                \n        except Exception as e:\n            raise ImageProcessError(f\"图像尺寸调整失败: {str(e)}\") from e\n    \n    @staticmethod\n    def convert_to_grayscale(image: Image.Image) -> Image.Image:\n        \"\"\"\n        将图像转换为灰度图\n        \n        Args:\n            image: 输入图像\n            \n        Returns:\n            灰度图像\n            \n        Raises:\n            ImageProcessError: 当转换失败时\n        \"\"\"\n        try:\n            return image.convert('L')\n        except Exception as e:\n            raise ImageProcessError(f\"灰度转换失败: {str(e)}\") from e\n    \n    @staticmethod\n    def normalize_image(image: Union[Image.Image, np.ndarray], \n                       target_mean: float = 0.0, target_std: float = 1.0) -> np.ndarray:\n        \"\"\"\n        标准化图像像素值\n        \n        Args:\n            image: 输入图像\n            target_mean: 目标均值\n            target_std: 目标标准差\n            \n        Returns:\n            标准化后的numpy数组\n            \n        Raises:\n            ImageProcessError: 当处理失败时\n        \"\"\"\n        try:\n            if isinstance(image, Image.Image):\n                img_array = image_to_numpy(image)\n            else:\n                img_array = image.copy()\n            \n            # 转换为float32并归一化到[0,1]\n            img_array = img_array.astype(np.float32) / 255.0\n            \n            # 计算当前均值和标准差\n            current_mean = np.mean(img_array)\n            current_std = np.std(img_array)\n            \n            # 避免除零\n            if current_std == 0:\n                current_std = 1.0\n            \n            # 标准化\n            normalized = (img_array - current_mean) / current_std\n            normalized = normalized * target_std + target_mean\n            \n            return normalized\n            \n        except Exception as e:\n            raise ImageProcessError(f\"图像标准化失败: {str(e)}\") from e\n    \n    @staticmethod\n    def enhance_contrast(image: Image.Image, factor: float = 1.5) -> Image.Image:\n        \"\"\"\n        增强图像对比度\n        \n        Args:\n            image: 输入图像\n            factor: 对比度增强因子\n            \n        Returns:\n            对比度增强后的图像\n            \n        Raises:\n            ImageProcessError: 当处理失败时\n        \"\"\"\n        try:\n            from PIL import ImageEnhance\n            enhancer = ImageEnhance.Contrast(image)\n            return enhancer.enhance(factor)\n        except Exception as e:\n            raise ImageProcessError(f\"对比度增强失败: {str(e)}\") from e\n    \n    @staticmethod\n    def enhance_sharpness(image: Image.Image, factor: float = 1.5) -> Image.Image:\n        \"\"\"\n        增强图像锐度\n        \n        Args:\n            image: 输入图像\n            factor: 锐度增强因子\n            \n        Returns:\n            锐度增强后的图像\n            \n        Raises:\n            ImageProcessError: 当处理失败时\n        \"\"\"\n        try:\n            from PIL import ImageEnhance\n            enhancer = ImageEnhance.Sharpness(image)\n            return enhancer.enhance(factor)\n        except Exception as e:\n            raise ImageProcessError(f\"锐度增强失败: {str(e)}\") from e\n    \n    @staticmethod\n    def remove_noise(image: Image.Image, kernel_size: int = 3) -> Image.Image:\n        \"\"\"\n        去除图像噪声\n        \n        Args:\n            image: 输入图像\n            kernel_size: 滤波核大小\n            \n        Returns:\n            去噪后的图像\n            \n        Raises:\n            ImageProcessError: 当处理失败时\n        \"\"\"\n        try:\n            img_array = image_to_numpy(image)\n            \n            # 使用中值滤波去噪\n            if len(img_array.shape) == 3:\n                # 彩色图像\n                denoised = cv2.medianBlur(img_array, kernel_size)\n            else:\n                # 灰度图像\n                denoised = cv2.medianBlur(img_array, kernel_size)\n            \n            return numpy_to_image(denoised, image.mode)\n            \n        except Exception as e:\n            raise ImageProcessError(f\"图像去噪失败: {str(e)}\") from e\n    \n    @staticmethod\n    def binarize_image(image: Image.Image, threshold: int = 128, \n                      method: str = 'simple') -> Image.Image:\n        \"\"\"\n        图像二值化\n        \n        Args:\n            image: 输入图像\n            threshold: 二值化阈值\n            method: 二值化方法 ('simple', 'otsu', 'adaptive')\n            \n        Returns:\n            二值化后的图像\n            \n        Raises:\n            ImageProcessError: 当处理失败时\n        \"\"\"\n        try:\n            # 转换为灰度图\n            if image.mode != 'L':\n                gray_image = image.convert('L')\n            else:\n                gray_image = image\n            \n            img_array = image_to_numpy(gray_image)\n            \n            if method == 'simple':\n                _, binary = cv2.threshold(img_array, threshold, 255, cv2.THRESH_BINARY)\n            elif method == 'otsu':\n                _, binary = cv2.threshold(img_array, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)\n            elif method == 'adaptive':\n                binary = cv2.adaptiveThreshold(img_array, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, \n                                             cv2.THRESH_BINARY, 11, 2)\n            else:\n                raise ValueError(f\"不支持的二值化方法: {method}\")\n            \n            return numpy_to_image(binary, 'L')\n            \n        except Exception as e:\n            raise ImageProcessError(f\"图像二值化失败: {str(e)}\") from e\n    \n    @staticmethod\n    def preprocess_for_ocr(image: Image.Image, target_height: int = 64, \n                          enhance_contrast: bool = True, \n                          remove_noise: bool = True) -> Image.Image:\n        \"\"\"\n        OCR预处理流水线\n        \n        Args:\n            image: 输入图像\n            target_height: 目标高度\n            enhance_contrast: 是否增强对比度\n            remove_noise: 是否去噪\n            \n        Returns:\n            预处理后的图像\n            \n        Raises:\n            ImageProcessError: 当处理失败时\n        \"\"\"\n        try:\n            processed_image = image.copy()\n            \n            # 处理PNG透明背景\n            if processed_image.mode == 'RGBA':\n                processed_image = png_rgba_black_preprocess(processed_image)\n            \n            # 调整尺寸（保持宽高比）\n            original_width, original_height = processed_image.size\n            target_width = int(original_width * (target_height / original_height))\n            processed_image = ImageProcessor.resize_image(\n                processed_image, (target_width, target_height), keep_aspect_ratio=False\n            )\n            \n            # 增强对比度\n            if enhance_contrast:\n                processed_image = ImageProcessor.enhance_contrast(processed_image, factor=1.2)\n            \n            # 去噪\n            if remove_noise:\n                processed_image = ImageProcessor.remove_noise(processed_image, kernel_size=3)\n            \n            # 转换为灰度图\n            processed_image = ImageProcessor.convert_to_grayscale(processed_image)\n            \n            return processed_image\n            \n        except Exception as e:\n            raise ImageProcessError(f\"OCR预处理失败: {str(e)}\") from e\n"
  },
  {
    "path": "ddddocr/requirements.txt",
    "content": "numpy\nonnxruntime\nPillow\nopencv-python; sys_platform == \"win32\" or sys_platform == \"darwin\"\nopencv-python-headless; sys_platform == \"linux\"\nfastapi>=0.68.0\nuvicorn>=0.15.0\npython-multipart>=0.0.5\npydantic>=1.8.0,<3\nrequests>=2.25.0\n"
  },
  {
    "path": "ddddocr/utils/__init__.py",
    "content": "# coding=utf-8\n\"\"\"\n工具函数模块\n提供图像处理、异常处理、输入验证等工具函数\n\"\"\"\n\n# 从新的模块化结构导入\nfrom .image_io import png_rgba_black_preprocess\nfrom .exceptions import DDDDOCRError, ModelLoadError, ImageProcessError\nfrom .validators import validate_image_input, validate_model_config\n\n# 从兼容模块导入（保持向后兼容）\nfrom .compat import (\n    ALLOWED_IMAGE_FORMATS,\n    MAX_IMAGE_BYTES,\n    MAX_IMAGE_SIDE,\n    DdddOcrInputError,\n    InvalidImageError,\n    TypeError,\n    base64_to_image,\n    get_img_base64,\n)\n\n__all__ = [\n    # 新模块化结构的导出\n    'png_rgba_black_preprocess',\n    'DDDDOCRError',\n    'ModelLoadError',\n    'ImageProcessError',\n    'validate_image_input',\n    'validate_model_config',\n    # 从 compat.py 导入的兼容性导出\n    'ALLOWED_IMAGE_FORMATS',\n    'MAX_IMAGE_BYTES',\n    'MAX_IMAGE_SIDE',\n    'DdddOcrInputError',\n    'InvalidImageError',\n    'TypeError',\n    'base64_to_image',\n    'get_img_base64',\n]\n"
  },
  {
    "path": "ddddocr/utils/compat.py",
    "content": "# coding=utf-8\nimport base64\nimport binascii\nimport io\nimport os\nfrom typing import Union\n\nfrom PIL import Image\n\nMAX_IMAGE_BYTES = 8 * 1024 * 1024\nMAX_IMAGE_SIDE = 4096\nALLOWED_IMAGE_FORMATS = {\n    'PNG', 'JPEG', 'JPG', 'WEBP', 'BMP', 'GIF', 'TIFF'\n}\n\n\nclass TypeError(Exception):\n    pass\n\n\nclass DdddOcrInputError(TypeError):\n    \"\"\"向下兼容的输入异常基类\"\"\"\n\n\nclass InvalidImageError(DdddOcrInputError):\n    \"\"\"图片格式或大小非法时抛出\"\"\"\n\n\ndef base64_to_image(img_base64: str) -> Image.Image:\n    if not isinstance(img_base64, str):\n        raise DdddOcrInputError(\"base64 输入必须是字符串\")\n    try:\n        img_data = base64.b64decode(img_base64, validate=True)\n    except binascii.Error as exc:\n        raise DdddOcrInputError(\"base64 内容非法\") from exc\n    if len(img_data) == 0:\n        raise InvalidImageError(\"base64 内容为空\")\n    if len(img_data) > MAX_IMAGE_BYTES:\n        raise InvalidImageError(\"图片容量超过允许上限\")\n    try:\n        image = Image.open(io.BytesIO(img_data))\n    except Exception as exc:\n        raise InvalidImageError(\"无法从 base64 中解析图片\") from exc\n    return image\n\n\ndef get_img_base64(single_image_path):\n    with open(single_image_path, 'rb') as fp:\n        img_base64 = base64.b64encode(fp.read())\n        return img_base64.decode()\n\n\ndef _coerce_bool(value: Union[bool, str], field_name: str) -> bool:\n    if isinstance(value, bool):\n        return value\n    if isinstance(value, str):\n        lowered = value.strip().lower()\n        if lowered in {'true', '1', 'yes', 'y'}:\n            return True\n        if lowered in {'false', '0', 'no', 'n'}:\n            return False\n    raise DdddOcrInputError(f\"字段 {field_name} 只能是 bool 或 true/false 字符串，当前值: {value!r}\")\n\n\ndef _coerce_int(value: Union[int, str], field_name: str) -> int:\n    if isinstance(value, int):\n        return value\n    if isinstance(value, str):\n        try:\n            return int(value.strip())\n        except ValueError:\n            pass\n    raise DdddOcrInputError(f\"字段 {field_name} 只能是整数，当前值: {value!r}\")\n\n\ndef _coerce_positive_int(value: Union[int, str], field_name: str) -> int:\n    result = _coerce_int(value, field_name)\n    if result <= 0:\n        raise DdddOcrInputError(f\"字段 {field_name} 必须是正整数\")\n    return result\n\n\ndef _ensure_file_exists(path: str, description: str) -> None:\n    if path and not os.path.exists(path):\n        raise DdddOcrInputError(f\"{description} {path} 不存在\")\n\n\ndef png_rgba_black_preprocess(img: Image):\n    width = img.width\n    height = img.height\n    image = Image.new('RGB', size=(width, height), color=(255, 255, 255))\n    image.paste(img, (0, 0), mask=img)\n    return image\n"
  },
  {
    "path": "ddddocr/utils/exceptions.py",
    "content": "# coding=utf-8\n\"\"\"\n异常处理模块\n定义项目中使用的自定义异常类\n\"\"\"\n\nimport sys\nimport platform\n\n\nclass DDDDOCRError(Exception):\n    \"\"\"DDDDOCR基础异常类\"\"\"\n    pass\n\n\nclass ModelLoadError(DDDDOCRError):\n    \"\"\"模型加载异常\"\"\"\n    pass\n\n\nclass ImageProcessError(DDDDOCRError):\n    \"\"\"图像处理异常\"\"\"\n    pass\n\n\nclass TypeError(Exception):\n    \"\"\"类型错误异常（保持向后兼容）\"\"\"\n    pass\n\n\ndef handle_opencv_import_error(error: ImportError) -> None:\n    \"\"\"\n    处理OpenCV导入错误，提供详细的解决方案\n    \n    Args:\n        error: ImportError异常对象\n    \"\"\"\n    error_msg = f\"\"\"\nOpenCV导入失败: {str(error)}\n\n常见解决方案：\n\n1. 重新安装opencv-python:\n   pip uninstall opencv-python opencv-python-headless\n   pip install opencv-python-headless\n\n2. 系统特定解决方案：\n\"\"\"\n    \n    system = platform.system().lower()\n    if system == \"linux\":\n        error_msg += \"\"\"\n   Linux系统：\n   - Ubuntu/Debian: sudo apt-get install build-essential libglib2.0-0 libsm6 libxext6 libxrender-dev libgl1-mesa-glx\n   - CentOS/RHEL: sudo yum install gcc gcc-c++ make glib2-devel libSM libXext libXrender mesa-libGL\n   - 或尝试: sudo apt-get install python3-opencv\n\"\"\"\n    elif system == \"windows\":\n        error_msg += \"\"\"\n   Windows系统：\n   - 安装Visual C++运行库: https://www.ghxi.com/yxkhj.html\n   - 确保使用64位Python版本\n   - 尝试: pip install opencv-python --force-reinstall\n\"\"\"\n    elif system == \"darwin\":  # macOS\n        error_msg += \"\"\"\n   macOS系统：\n   - 使用Homebrew: brew install opencv\n   - 或使用conda: conda install opencv\n   - M1/M2芯片参考: https://github.com/sml2h3/ddddocr/issues/67\n\"\"\"\n    \n    error_msg += \"\"\"\n3. 如果问题持续存在，请访问项目Issues页面寻求帮助：\n   https://github.com/sml2h3/ddddocr/issues\n\n注意：请不要自动安装依赖，按照上述指导手动安装。\n\"\"\"\n    \n    print(error_msg)\n    raise ImportError(\"OpenCV导入失败，请参考上述解决方案\") from error\n\n\ndef safe_import_opencv():\n    \"\"\"\n    安全导入OpenCV，如果失败则提供详细错误信息\n    \n    Returns:\n        cv2模块对象\n        \n    Raises:\n        ImportError: 当OpenCV导入失败时\n    \"\"\"\n    try:\n        import cv2\n        return cv2\n    except ImportError as e:\n        handle_opencv_import_error(e)\n"
  },
  {
    "path": "ddddocr/utils/image_io.py",
    "content": "# coding=utf-8\n\"\"\"\n图像输入输出工具模块\n提供图像格式转换、读取、保存等功能\n\"\"\"\n\nimport io\nimport os\nimport base64\nimport pathlib\nfrom typing import Union, BinaryIO\nfrom PIL import Image\nimport numpy as np\n\nfrom .exceptions import ImageProcessError\n\n\ndef base64_to_image(img_base64: str) -> Image.Image:\n    \"\"\"\n    将base64编码的图片转换为PIL Image对象\n    \n    Args:\n        img_base64: base64编码的图片字符串\n        \n    Returns:\n        PIL Image对象\n        \n    Raises:\n        ImageProcessError: 当base64解码或图片加载失败时\n    \"\"\"\n    try:\n        img_data = base64.b64decode(img_base64)\n        return Image.open(io.BytesIO(img_data))\n    except Exception as e:\n        raise ImageProcessError(f\"base64图片解码失败: {str(e)}\") from e\n\n\ndef get_img_base64(image_path: Union[str, pathlib.Path]) -> str:\n    \"\"\"\n    读取图片文件并转换为base64编码字符串\n    \n    Args:\n        image_path: 图片文件路径\n        \n    Returns:\n        base64编码的图片字符串\n        \n    Raises:\n        ImageProcessError: 当文件读取失败时\n    \"\"\"\n    try:\n        with open(image_path, 'rb') as fp:\n            img_base64 = base64.b64encode(fp.read())\n            return img_base64.decode()\n    except Exception as e:\n        raise ImageProcessError(f\"图片文件读取失败: {str(e)}\") from e\n\n\ndef png_rgba_black_preprocess(img: Image.Image) -> Image.Image:\n    \"\"\"\n    处理PNG图片的RGBA透明背景，将透明部分设置为白色背景\n    \n    Args:\n        img: PIL Image对象\n        \n    Returns:\n        处理后的PIL Image对象\n        \n    Raises:\n        ImageProcessError: 当图片处理失败时\n    \"\"\"\n    try:\n        width = img.width\n        height = img.height\n        image = Image.new('RGB', size=(width, height), color=(255, 255, 255))\n        image.paste(img, (0, 0), mask=img)\n        return image\n    except Exception as e:\n        raise ImageProcessError(f\"PNG透明背景处理失败: {str(e)}\") from e\n\n\ndef load_image_from_input(img_input: Union[bytes, str, pathlib.PurePath, Image.Image, np.ndarray]) -> Image.Image:\n    \"\"\"\n    从多种输入格式加载图片\n\n    Args:\n        img_input: 图片输入，支持bytes、base64字符串、文件路径、PIL Image对象或numpy数组\n\n    Returns:\n        PIL Image对象\n\n    Raises:\n        ImageProcessError: 当图片加载失败时\n    \"\"\"\n    try:\n        if isinstance(img_input, bytes):\n            return Image.open(io.BytesIO(img_input))\n        elif isinstance(img_input, Image.Image):\n            return img_input.copy()\n        elif isinstance(img_input, np.ndarray):\n            return _numpy_to_pil_image(img_input)\n        elif isinstance(img_input, str):\n            # 先尝试作为文件路径，如果失败则作为base64\n            if os.path.exists(img_input):\n                return Image.open(img_input)\n            else:\n                return base64_to_image(img_input)\n        elif isinstance(img_input, pathlib.PurePath):\n            return Image.open(img_input)\n        else:\n            supported_types = (bytes, str, pathlib.PurePath, Image.Image, np.ndarray)\n            raise ImageProcessError(\n                f\"不支持的图片输入类型: {type(img_input)}。\"\n                f\"支持的类型: {supported_types}\"\n            )\n    except ImageProcessError:\n        raise\n    except Exception as e:\n        raise ImageProcessError(f\"图片加载失败: {str(e)}\") from e\n\n\ndef _numpy_to_pil_image(array: np.ndarray) -> Image.Image:\n    \"\"\"\n    将numpy数组转换为PIL Image对象\n\n    Args:\n        array: numpy数组\n\n    Returns:\n        PIL Image对象\n\n    Raises:\n        ImageProcessError: 当转换失败时\n    \"\"\"\n    try:\n        # 确保数组是正确的数据类型\n        if array.dtype != np.uint8:\n            # 如果是浮点数，假设范围是0-1，转换为0-255\n            if array.dtype in [np.float32, np.float64]:\n                if array.max() <= 1.0:\n                    array = (array * 255).astype(np.uint8)\n                else:\n                    array = array.astype(np.uint8)\n            else:\n                array = array.astype(np.uint8)\n\n        # 处理不同的数组形状\n        if len(array.shape) == 2:\n            # 灰度图像 (H, W)\n            return Image.fromarray(array, mode='L')\n        elif len(array.shape) == 3:\n            if array.shape[2] == 1:\n                # 单通道图像 (H, W, 1) -> (H, W)\n                return Image.fromarray(array.squeeze(axis=2), mode='L')\n            elif array.shape[2] == 3:\n                # RGB图像 (H, W, 3)\n                return Image.fromarray(array, mode='RGB')\n            elif array.shape[2] == 4:\n                # RGBA图像 (H, W, 4)\n                return Image.fromarray(array, mode='RGBA')\n            else:\n                raise ImageProcessError(f\"不支持的通道数: {array.shape[2]}，支持1、3、4通道\")\n        else:\n            raise ImageProcessError(f\"不支持的数组维度: {len(array.shape)}，支持2D或3D数组\")\n\n    except Exception as e:\n        raise ImageProcessError(f\"numpy数组转PIL图像失败: {str(e)}\") from e\n\n\ndef image_to_numpy(image: Image.Image, target_mode: str = 'RGB') -> np.ndarray:\n    \"\"\"\n    将PIL Image转换为numpy数组\n    \n    Args:\n        image: PIL Image对象\n        target_mode: 目标颜色模式，默认为'RGB'\n        \n    Returns:\n        numpy数组\n        \n    Raises:\n        ImageProcessError: 当转换失败时\n    \"\"\"\n    try:\n        if image.mode != target_mode:\n            image = image.convert(target_mode)\n        return np.array(image)\n    except Exception as e:\n        raise ImageProcessError(f\"图片转numpy数组失败: {str(e)}\") from e\n\n\ndef numpy_to_image(array: np.ndarray, mode: str = 'RGB') -> Image.Image:\n    \"\"\"\n    将numpy数组转换为PIL Image\n    \n    Args:\n        array: numpy数组\n        mode: 图片模式，默认为'RGB'\n        \n    Returns:\n        PIL Image对象\n        \n    Raises:\n        ImageProcessError: 当转换失败时\n    \"\"\"\n    try:\n        return Image.fromarray(array, mode=mode)\n    except Exception as e:\n        raise ImageProcessError(f\"numpy数组转图片失败: {str(e)}\") from e\n"
  },
  {
    "path": "ddddocr/utils/validators.py",
    "content": "# coding=utf-8\n\"\"\"\n输入验证模块\n提供各种输入参数的验证功能\n\"\"\"\n\nimport pathlib\nfrom typing import Union, List, Tuple, Any\nfrom PIL import Image\nimport numpy as np\n\nfrom .exceptions import DDDDOCRError\n\n\ndef validate_image_input(img_input: Any) -> bool:\n    \"\"\"\n    验证图片输入是否为支持的类型\n\n    Args:\n        img_input: 图片输入\n\n    Returns:\n        bool: 是否为有效的图片输入\n\n    Raises:\n        DDDDOCRError: 当输入类型不支持时\n    \"\"\"\n    valid_types = (bytes, str, pathlib.PurePath, Image.Image, np.ndarray)\n    if not isinstance(img_input, valid_types):\n        raise DDDDOCRError(f\"不支持的图片输入类型: {type(img_input)}。支持的类型: {valid_types}\")\n    return True\n\n\ndef validate_model_config(ocr: bool = True, det: bool = False, old: bool = False, \n                         beta: bool = False, use_gpu: bool = False, device_id: int = 0) -> bool:\n    \"\"\"\n    验证模型配置参数\n    \n    Args:\n        ocr: 是否启用OCR功能\n        det: 是否启用目标检测功能\n        old: 是否使用旧版OCR模型\n        beta: 是否使用beta版OCR模型\n        use_gpu: 是否使用GPU\n        device_id: GPU设备ID\n        \n    Returns:\n        bool: 配置是否有效\n        \n    Raises:\n        DDDDOCRError: 当配置无效时\n    \"\"\"\n    # 检查基本参数类型\n    if not isinstance(ocr, bool):\n        raise DDDDOCRError(\"ocr参数必须为布尔值\")\n    if not isinstance(det, bool):\n        raise DDDDOCRError(\"det参数必须为布尔值\")\n    if not isinstance(old, bool):\n        raise DDDDOCRError(\"old参数必须为布尔值\")\n    if not isinstance(beta, bool):\n        raise DDDDOCRError(\"beta参数必须为布尔值\")\n    if not isinstance(use_gpu, bool):\n        raise DDDDOCRError(\"use_gpu参数必须为布尔值\")\n    if not isinstance(device_id, int) or device_id < 0:\n        raise DDDDOCRError(\"device_id参数必须为非负整数\")\n    \n    # 检查功能组合的有效性\n    if not ocr and not det:\n        # 允许两者都为False，这种情况下只能使用滑块功能\n        pass\n    \n    # 检查模型版本冲突\n    if old and beta:\n        raise DDDDOCRError(\"old和beta参数不能同时为True\")\n    \n    # 检查GPU配置\n    if use_gpu and device_id < 0:\n        raise DDDDOCRError(\"使用GPU时device_id必须为非负整数\")\n    \n    return True\n\n\ndef validate_color_filter_params(colors: List[str] = None, \n                                custom_ranges: List[Tuple[Tuple[int, int, int], Tuple[int, int, int]]] = None) -> bool:\n    \"\"\"\n    验证颜色过滤参数\n    \n    Args:\n        colors: 预设颜色名称列表\n        custom_ranges: 自定义HSV范围列表\n        \n    Returns:\n        bool: 参数是否有效\n        \n    Raises:\n        DDDDOCRError: 当参数无效时\n    \"\"\"\n    if colors is not None:\n        if not isinstance(colors, list):\n            raise DDDDOCRError(\"colors参数必须为列表\")\n        for color in colors:\n            if not isinstance(color, str):\n                raise DDDDOCRError(\"colors列表中的元素必须为字符串\")\n    \n    if custom_ranges is not None:\n        if not isinstance(custom_ranges, list):\n            raise DDDDOCRError(\"custom_ranges参数必须为列表\")\n        \n        for range_item in custom_ranges:\n            if not isinstance(range_item, (list, tuple)) or len(range_item) != 2:\n                raise DDDDOCRError(\"custom_ranges中的每个元素必须为包含两个元素的列表或元组\")\n            \n            lower, upper = range_item\n            if not isinstance(lower, (list, tuple)) or len(lower) != 3:\n                raise DDDDOCRError(\"HSV范围的下界必须为包含3个元素的列表或元组\")\n            if not isinstance(upper, (list, tuple)) or len(upper) != 3:\n                raise DDDDOCRError(\"HSV范围的上界必须为包含3个元素的列表或元组\")\n            \n            # 验证HSV值范围\n            for i, (l, u) in enumerate(zip(lower, upper)):\n                if not isinstance(l, int) or not isinstance(u, int):\n                    raise DDDDOCRError(\"HSV值必须为整数\")\n                \n                if i == 0:  # H通道\n                    if not (0 <= l <= 180) or not (0 <= u <= 180):\n                        raise DDDDOCRError(\"H通道值必须在0-180范围内\")\n                else:  # S和V通道\n                    if not (0 <= l <= 255) or not (0 <= u <= 255):\n                        raise DDDDOCRError(\"S和V通道值必须在0-255范围内\")\n                \n                if l > u:\n                    raise DDDDOCRError(f\"HSV范围下界不能大于上界: {l} > {u}\")\n    \n    if colors is None and custom_ranges is None:\n        raise DDDDOCRError(\"必须指定colors或custom_ranges参数\")\n    \n    return True\n\n\ndef validate_charset_range(charset_range: Union[int, str, List[str]]) -> bool:\n    \"\"\"\n    验证字符集范围参数\n    \n    Args:\n        charset_range: 字符集范围参数\n        \n    Returns:\n        bool: 参数是否有效\n        \n    Raises:\n        DDDDOCRError: 当参数无效时\n    \"\"\"\n    if charset_range is None:\n        return True\n    \n    if isinstance(charset_range, int):\n        if charset_range < 0:\n            raise DDDDOCRError(\"字符集范围索引必须为非负整数\")\n    elif isinstance(charset_range, str):\n        if len(charset_range) == 0:\n            raise DDDDOCRError(\"字符集范围字符串不能为空\")\n    elif isinstance(charset_range, list):\n        if len(charset_range) == 0:\n            raise DDDDOCRError(\"字符集范围列表不能为空\")\n        for char in charset_range:\n            if not isinstance(char, str):\n                raise DDDDOCRError(\"字符集范围列表中的元素必须为字符串\")\n    else:\n        raise DDDDOCRError(f\"不支持的字符集范围类型: {type(charset_range)}\")\n    \n    return True\n"
  },
  {
    "path": "docker-compose.yml",
    "content": "version: '3.8'\n\n# DdddOcr API 服务的 Docker Compose 配置文件\n# 本文件定义了运行 DdddOcr API 服务所需的所有服务和配置\n\nservices:\n  # DdddOcr API 服务\n  ddddocr-api:\n    # 使用当前目录的 Dockerfile 构建镜像\n    build: \n      context: .\n      dockerfile: Dockerfile\n    \n    # 容器名称\n    container_name: ddddocr-api\n    \n    # 端口映射: 宿主机端口:容器内部端口 (可通过环境变量覆盖宿主机端口)\n    ports:\n      - \"${DDDDOCR_PORT:-8000}:8000\"\n    \n    # 环境变量配置 (可通过宿主机上的环境变量覆盖)\n    # 这些环境变量将传递给 DdddOcr API 服务\n    environment:\n      # API 服务器配置\n      - DDDDOCR_HOST=0.0.0.0                             # 服务绑定地址，0.0.0.0 表示监听所有网络接口\n      - DDDDOCR_PORT=8000                                # 服务监听端口\n      - DDDDOCR_WORKERS=${DDDDOCR_WORKERS:-1}            # API 服务工作进程数，默认 1\n      \n      # OCR 引擎配置\n      - DDDDOCR_OCR=${DDDDOCR_OCR:-true}                 # 是否启用 OCR 功能，默认启用\n      - DDDDOCR_DET=${DDDDOCR_DET:-false}                # 是否启用目标检测功能，默认不启用\n      - DDDDOCR_OLD=${DDDDOCR_OLD:-false}                # 是否使用旧版 OCR 模型，默认不使用\n      - DDDDOCR_BETA=${DDDDOCR_BETA:-false}              # 是否使用 Beta 版 OCR 模型，默认不使用\n      - DDDDOCR_USE_GPU=${DDDDOCR_USE_GPU:-false}        # 是否使用 GPU 加速，默认不使用\n      - DDDDOCR_DEVICE_ID=${DDDDOCR_DEVICE_ID:-0}        # GPU 设备 ID，默认 0\n      - DDDDOCR_SHOW_AD=${DDDDOCR_SHOW_AD:-true}         # 是否显示广告，默认显示\n      \n      # 自定义模型配置\n      - DDDDOCR_IMPORT_ONNX_PATH=${DDDDOCR_IMPORT_ONNX_PATH:-\"\"} # 自定义模型路径\n      - DDDDOCR_CHARSETS_PATH=${DDDDOCR_CHARSETS_PATH:-\"\"}       # 自定义字符集路径\n    \n    # 卷挂载配置，用于持久化数据或提供自定义模型\n    volumes:\n      # 可选：挂载自定义模型目录\n      # - ./custom_models:/app/custom_models\n      \n      # 可选：如果需要日志持久化，取消下面的注释\n      # - ./logs:/app/logs\n    \n    # 容器重启策略\n    restart: unless-stopped\n    \n    # 资源限制配置\n    # deploy:\n    #   resources:\n    #     limits:\n    #       cpus: '2'       # 限制 CPU 使用，例如 '2' 表示使用最多 2 个核心\n    #       memory: 2G      # 限制内存使用，例如 2G\n    \n    # GPU 支持配置（仅在需要 GPU 加速且宿主机有 NVIDIA GPU 时启用）\n    # 如果需要使用 GPU，取消注释以下 deploy 配置，同时将 DDDDOCR_USE_GPU 设置为 true\n    # deploy:\n    #   resources:\n    #     reservations:\n    #       devices:\n    #         - driver: nvidia\n    #           count: 1\n    #           capabilities: [gpu]\n    \n    # 健康检查配置\n    healthcheck:\n      test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:8000/health\"]\n      interval: 30s\n      timeout: 10s\n      retries: 3\n      start_period: 10s\n\n# 可选：使用卷来持久化数据\n# volumes:\n#   logs:\n#     driver: local "
  },
  {
    "path": "examples/README.md",
    "content": "# DdddOcr - 通用验证码识别SDK\n\n<p align=\"center\">\n  <img src=\"logo.png\" alt=\"DdddOcr Logo\" width=\"300\">\n</p>\n\n<p align=\"center\">\n  <strong>一个简单易用的通用验证码识别Python库</strong>\n</p>\n\n## 目录\n\n- [赞助合作商](#赞助合作商)\n- [项目介绍](#项目介绍)\n- [环境支持](#环境支持)\n- [安装方法](#安装方法)\n- [功能概览](#功能概览)\n- [初始化参数详解](#初始化参数详解)\n  - [参数详细说明](#参数详细说明)\n  - [功能组合与冲突](#功能组合与冲突)\n  - [模型选择指南](#模型选择指南)\n  - [性能优化参数](#性能优化参数)\n- [详细使用说明](#详细使用说明)\n  - [文字识别功能](#文字识别功能)\n    - [基础OCR识别](#基础ocr识别)\n    - [OCR概率输出](#ocr概率输出)\n    - [自定义字符范围](#自定义字符范围)\n    - [颜色过滤功能](#颜色过滤功能)\n  - [目标检测功能](#目标检测功能)\n  - [滑块验证码处理](#滑块验证码处理)\n    - [算法1：边缘匹配](#算法1边缘匹配)\n    - [算法2：图像差异比较](#算法2图像差异比较)\n  - [自定义模型导入](#自定义模型导入)\n- [高级用法](#高级用法)\n  - [批量处理](#批量处理)\n  - [多线程优化](#多线程优化)\n  - [验证码预处理](#验证码预处理)\n- [常见问题](#常见问题)\n  - [初始化速度慢](#初始化速度慢)\n  - [识别准确率不高](#识别准确率不高)\n  - [GPU加速](#gpu加速)\n  - [处理复杂验证码](#如何处理复杂验证码)\n  - [内存占用过高](#内存占用过高)\n  - [参数冲突问题](#参数冲突问题)\n  - [支持的图片格式](#支持的图片格式)\n  - [多线程并发问题](#多线程并发问题)\n- [项目技术支持](#项目技术支持)\n- [使用示例](#使用示例)\n- [许可证](#许可证)\n\n## 赞助合作商\n\n|                                                            | 赞助合作商 | 推荐理由                                                                                             |\n|------------------------------------------------------------|------------|--------------------------------------------------------------------------------------------------|\n| ![YesCaptcha](https://cdn.wenanzhe.com/img/yescaptcha.png) | [YesCaptcha](https://yescaptcha.com/i/NSwk7i) | 谷歌reCaptcha验证码 / hCaptcha验证码 / funCaptcha验证码商业级识别接口 [点我](https://yescaptcha.com/i/NSwk7i) 直达VIP4 |\n| ![超级鹰](https://cdn.wenanzhe.com/img/logo.gif) | [超级鹰](https://www.chaojiying.com/) | 全球领先的智能图片分类及识别商家，安全、准确、高效、稳定、开放，强大的技术及校验团队，支持大并发。7*24h作业进度管理 |\n| ![Malenia](https://cdn.wenanzhe.com/img/malenia.png!/scale/50)    | [Malenia](https://malenia.iinti.cn/malenia-doc/) | Malenia企业级代理IP网关平台/代理IP分销软件 |\n| 雨云VPS    | [注册首月5折](https://www.rainyun.com/ddddocr_) | 浙江节点低价大带宽，100M每月30元 |\n\n## 项目介绍\n\nDdddOcr 是一个通用验证码离线本地识别SDK，由 [sml2h3](https://github.com/sml2h3) 与 [kerlomz](https://github.com/kerlomz) 共同开发完成。该项目通过大批量生成随机数据进行深度网络训练，可以识别各种类型的验证码，包括：\n\n- 常见的数字字母组合验证码\n- 中文验证码\n- 滑块验证码\n- 各种特殊字符验证码\n\n项目设计理念是\"最简依赖\"，尽量减少用户的配置和使用成本，提供简单易用的API接口。\n\n## 环境支持\n\n| 系统 | CPU | GPU | 最大支持Python版本 | 备注 |\n|-----|-----|-----|--------------|-----|\n| Windows 64位 | ✓ | ✓ | 3.12 | 部分版本Windows需要安装[vc运行库](https://www.ghxi.com/yxkhj.html) |\n| Linux 64 / ARM64 | ✓ | ✓ | 3.12 | |\n| macOS X64 | ✓ | ✓ | 3.12 | M1/M2/M3芯片用户请参考[相关说明](https://github.com/sml2h3/ddddocr/issues/67) |\n\n不支持的环境：\n- Windows 32位\n- Linux 32位\n\n## 安装方法\n\n### 从PyPI安装（推荐）\n\n```bash\npip install ddddocr\n```\n\n### 从源码安装\n\n```bash\ngit clone https://github.com/sml2h3/ddddocr.git\ncd ddddocr\npip install .\n```\n\n### 安装 API 依赖（可选）\n\n```bash\npip install \".[api]\"\n```\n\n> **注意**：请勿直接在ddddocr项目的根目录内直接import ddddocr，请确保你的开发项目目录名称不为ddddocr。\n\n## 功能概览\n\nDdddOcr提供以下核心功能：\n\n| 功能 | 描述 | 初始化参数 |\n|-----|-----|----------|\n| 文字识别 | 识别图片中的文字内容 | `ocr=True`（默认） |\n| 目标检测 | 检测图片中的目标位置 | `det=True` |\n| 滑块验证码识别 | 识别滑块验证码的缺口位置 | `ocr=False` |\n| 自定义模型导入 | 导入自定义训练的模型 | `import_onnx_path=\"模型路径\"` |\n\n## 初始化参数详解\n\n`DdddOcr` 类初始化时支持多种参数配置，以适应不同的使用场景：\n\n```python\nddddocr.DdddOcr(\n    ocr=True,           # 是否启用OCR功能\n    det=False,          # 是否启用目标检测功能\n    old=False,          # 是否使用旧版OCR模型\n    beta=False,         # 是否使用Beta版OCR模型（新模型）\n    use_gpu=False,      # 是否使用GPU加速\n    device_id=0,        # 使用的GPU设备ID\n    show_ad=True,       # 是否显示广告信息\n    import_onnx_path=\"\", # 自定义模型路径\n    charsets_path=\"\",    # 自定义字符集路径\n    max_image_bytes=None, # 单图最大字节数（默认 8MB）\n    max_image_side=None   # 单图最长边限制（默认 4096px）\n)\n```\n\n### 参数详细说明\n\n| 参数 | 类型 | 默认值 | 说明 |\n|-----|-----|-----|-----|\n| `ocr` | bool | True | 是否启用OCR功能，用于识别图片中的文字。**互斥性**：当`det=True`时会强制关闭OCR |\n| `det` | bool | False | 是否启用目标检测功能，用于检测图片中的目标位置。**互斥性**：`det=True`会覆盖`ocr=True` |\n| `old` | bool | False | 兼容参数，当前不会改变模型选择（默认即使用旧版模型） |\n| `beta` | bool | False | 是否使用Beta版OCR模型（新模型），对某些验证码识别效果更好。**互斥性**：与`old=True`参数互斥（但`old`当前不生效） |\n| `use_gpu` | bool | False | 是否使用GPU加速。**依赖关系**：需要安装CUDA和相应的onnxruntime-gpu版本，否则会初始化失败 |\n| `device_id` | int | 0 | 使用的GPU设备ID。**依赖关系**：仅在`use_gpu=True`时生效，指定使用哪个GPU设备 |\n| `show_ad` | bool | True | 是否在初始化时显示广告信息 |\n| `import_onnx_path` | str | \"\" | 自定义模型的onnx文件路径。**依赖关系**：设置此参数时，`charsets_path`参数必须同时提供；此时`ocr/det`设置会被忽略 |\n| `charsets_path` | str | \"\" | 自定义字符集的json文件路径。**依赖关系**：必须与`import_onnx_path`一起使用，否则无效 |\n| `max_image_bytes` | int/str | 8MB | 单图最大字节数上限（入参可为 int 或数字字符串） |\n| `max_image_side` | int/str | 4096 | 单图最长边像素上限（入参可为 int 或数字字符串） |\n\n### 功能组合与冲突\n\n根据参数组合，ddddocr具有不同的工作模式：\n\n1. **标准OCR模式**：\n   - 参数设置：`ocr=True, det=False`（默认）\n   - 功能：识别图片中的文字\n\n2. **目标检测模式**：\n   - 参数设置：`ocr=False, det=True`\n   - 功能：检测图片中的目标位置\n   - 注意：同时设置`ocr=True, det=True`时，会进入目标检测模式（`det`优先）\n\n3. **滑块识别模式**：\n   - 参数设置：`ocr=False, det=False`\n   - 功能：使用滑块匹配算法（需调用`slide_match`或`slide_comparison`方法）\n\n4. **自定义模型模式**：\n   - 参数设置：`import_onnx_path=\"模型路径\", charsets_path=\"字符集路径\"`\n   - 功能：使用自定义训练的模型进行识别\n   - 注意：设置此模式时，`ocr`和`det`参数会被忽略，且自定义字符集文件需包含 `charset/word/image/channel` 字段\n\n5. **OCR模型选择**：\n   - 默认模型：不设置特殊参数（当前使用 `common_old.onnx`）\n   - Beta模型：`beta=True`（使用 `common.onnx`）\n   - 旧版模型参数：`old=True`（当前不改变模型，仅为兼容保留）\n   - 注意：`beta`和`old`参数互斥，但`old`当前不生效\n\n### 模型选择指南\n\n- **默认模型**：当前默认使用 `common_old.onnx`，适用于多数简单验证码场景\n- **Beta模型**：`beta=True` 使用 `common.onnx`，对部分复杂验证码效果更好\n- **自定义模型**：当默认模型无法满足需求时，可以通过[dddd_trainer](https://github.com/sml2h3/dddd_trainer)训练自己的模型\n\n### 性能优化参数\n\n- **GPU加速**：对于处理大量图片时，开启GPU加速可显著提升性能\n  ```python\n  ocr = ddddocr.DdddOcr(use_gpu=True, device_id=0)\n  ```\n  \n- **GPU设备选择**：在多GPU环境中，可通过`device_id`指定使用的GPU\n  ```python\n  # 使用第二张GPU卡\n  ocr = ddddocr.DdddOcr(use_gpu=True, device_id=1)\n  ```\n\n- **关闭广告显示**：在生产环境中可关闭广告提示\n  ```python\n  ocr = ddddocr.DdddOcr(show_ad=False)\n  ```\n\n## 详细使用说明\n\n### 文字识别功能\n\n#### 基础OCR识别\n\n主要用于识别单行文字，如常见的英数验证码等。支持中文、英文、数字以及部分特殊字符的识别。\n\n```python\nimport ddddocr\n\n# 初始化OCR对象\nocr = ddddocr.DdddOcr()\n\n# 读取图片\nwith open(\"验证码图片.jpg\", \"rb\") as f:\n    image = f.read()\n\n# 识别图片\nresult = ocr.classification(image)\nprint(result)  # 输出识别结果\n```\n\n**OCR识别示例图片**\n\n**参考例图**\n\n包括且不限于以下图片\n\n<img src=\"https://cdn.wenanzhe.com/img/20210715211733855.png\" alt=\"captcha\" width=\"150\">\n<img src=\"https://cdn.wenanzhe.com/img/78b7f57d-371d-4b65-afb2-d19608ae1892.png\" alt=\"captcha\" width=\"150\">\n<img src=\"https://cdn.wenanzhe.com/img/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20211226142305.png\" alt=\"captcha\" width=\"150\">\n<img src=\"https://cdn.wenanzhe.com/img/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20211226142325.png\" alt=\"captcha\" width=\"150\">\n<img src=\"https://cdn.wenanzhe.com/img/2AMLyA_fd83e1f1800e829033417ae6dd0e0ae0.png\" alt=\"captcha\" width=\"150\">\n<img src=\"https://cdn.wenanzhe.com/img/aabd_181ae81dd5526b8b89f987d1179266ce.jpg\" alt=\"captcha\" width=\"150\">\n<br />\n<img src=\"https://cdn.wenanzhe.com/img/2bghz_b504e9f9de1ed7070102d21c6481e0cf.png\" alt=\"captcha\" width=\"150\">\n<img src=\"https://cdn.wenanzhe.com/img/0000_z4ecc2p65rxc610x.jpg\" alt=\"captcha\" width=\"150\">\n<img src=\"https://cdn.wenanzhe.com/img/2acd_0586b6b36858a4e8a9939db8a7ec07b7.jpg\" alt=\"captcha\" width=\"150\">\n<img src=\"https://cdn.wenanzhe.com/img/2a8r_79074e311d573d31e1630978fe04b990.jpg\" alt=\"captcha\" width=\"150\">\n<img src=\"https://cdn.wenanzhe.com/img/aftf_C2vHZlk8540y3qAmCM.bmp\" alt=\"captcha\" width=\"150\">\n<img src=\"https://cdn.wenanzhe.com/img/%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_20211226144057.png\" alt=\"captcha\" width=\"150\">\n\n**OCR模型选择**\n\nDdddOcr内置两套OCR模型，可以通过`beta`参数切换：\n\n```python\n# 使用第二套OCR模型\nocr = ddddocr.DdddOcr(beta=True)\n```\n\n**透明PNG图片处理**\n\n对于透明黑色PNG图片，可以使用`png_fix`参数（对所有 OCR 模式生效）：\n\n```python\nresult = ocr.classification(image, png_fix=True)\n```\n\n> **注意**：`png_fix` 仅对带透明通道的图片生效；初始化DdddOcr对象只需要一次，不要在每次识别时都重新初始化，这会导致速度变慢。\n\n#### OCR概率输出\n\n可以获取OCR识别结果的概率分布，便于进行更灵活的结果处理：\n\n```python\nimport ddddocr\n\nocr = ddddocr.DdddOcr()\nimage = open(\"test.jpg\", \"rb\").read()\n\n# 获取识别结果的概率分布\nresult = ocr.classification(image, probability=True)\n\n# 处理概率结果\ns = \"\"\nfor i in result['probability']:\n    s += result['charsets'][i.index(max(i))]\n\nprint(s)\n```\n\n**概率输出示例**（仅对内置模型生效，自定义模型会忽略`probability=True`并直接返回字符串）：\n\n```python\n# 概率输出结果示例\n{\n    'charsets': ['', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', ...],\n    'probability': [\n        [0.01, 0.02, 0.01, 0.03, 0.02, 0.01, 0.02, 0.75, 0.03, 0.05, 0.01, ...],  # 第一个字符的概率分布\n        [0.01, 0.01, 0.02, 0.01, 0.03, 0.02, 0.01, 0.02, 0.01, 0.80, 0.01, ...],  # 第二个字符的概率分布\n        ...\n    ]\n}\n```\n\n#### 自定义字符范围\n\n可以通过`set_ranges`方法限定OCR识别的字符范围：\n\n```python\nimport ddddocr\n\nocr = ddddocr.DdddOcr()\nimage = open(\"test.jpg\", \"rb\").read()\n\n# 设置识别范围为数字\nocr.set_ranges(0)  # 等同于 ocr.set_ranges(\"0123456789\")\n\n# 或自定义字符范围\nocr.set_ranges(\"0123456789+-x/=\")\n\nresult = ocr.classification(image)\nprint(result)\n```\n\n**内置字符范围参数**：\n\n| 参数值 | 含义 |\n|-----|-----|\n| 0 | 纯数字 0-9 |\n| 1 | 纯小写英文 a-z |\n| 2 | 纯大写英文 A-Z |\n| 3 | 小写英文 + 大写英文 |\n| 4 | 小写英文 + 数字 |\n| 5 | 大写英文 + 数字 |\n| 6 | 小写英文 + 大写英文 + 数字 |\n| 7 | 默认字符库 - 小写英文 - 大写英文 - 数字 |\n\n#### 颜色过滤功能\n\n对于一些特殊的验证码，可以通过颜色过滤来提高识别准确率：\n\n```python\nimport ddddocr\n\nocr = ddddocr.DdddOcr()\nimage = open(\"test.jpg\", \"rb\").read()\n\n# 只保留红色和蓝色部分\nresult = ocr.classification(image, colors=[\"red\", \"blue\"])\nprint(result)\n```\n\n**支持的颜色**：\n- red (红色)\n- green (绿色)\n- blue (蓝色)\n- yellow (黄色)\n- orange (橙色)\n- purple (紫色)\n- pink (粉色)\n- brown (棕色)\n\n也可以自定义颜色范围：\n\n```python\n# 自定义颜色范围\ncustom_ranges = {\n    'light_blue': [(90, 30, 30), (110, 255, 255)]  # HSV颜色空间\n}\n\nresult = ocr.classification(image, colors=[\"light_blue\"], custom_color_ranges=custom_ranges)\n```\n\n> **提示**：`custom_color_ranges` 只有在 `colors` 列表包含对应键名时才会生效。\n\n### 目标检测功能\n\n用于检测图像中可能的目标主体位置，返回目标的边界框坐标：\n\n```python\nimport ddddocr\nimport cv2\n\n# 初始化检测对象\ndet = ddddocr.DdddOcr(det=True, ocr=False)\n\n# 读取图片\nwith open(\"test.jpg\", 'rb') as f:\n    image = f.read()\n\n# 检测目标\nbboxes = det.detection(image)\nprint(bboxes)  # 输出格式：[[x1, y1, x2, y2], ...]\n\n# 可视化检测结果\nim = cv2.imread(\"test.jpg\")\nfor bbox in bboxes:\n    x1, y1, x2, y2 = bbox\n    im = cv2.rectangle(im, (x1, y1), (x2, y2), color=(0, 0, 255), thickness=2)\ncv2.imwrite(\"result.jpg\", im)\n```\n\n**目标检测示例**：\n\n**参考例图**\n\n包括且不限于以下图片\n\n<img src=\"https://cdn.wenanzhe.com/img/page1_1.jpg\" alt=\"captcha\" width=\"200\">\n<img src=\"https://cdn.wenanzhe.com/img/page1_2.jpg\" alt=\"captcha\" width=\"200\">\n<img src=\"https://cdn.wenanzhe.com/img/page1_3.jpg\" alt=\"captcha\" width=\"200\">\n<img src=\"https://cdn.wenanzhe.com/img/page1_4.jpg\" alt=\"captcha\" width=\"200\">\n<br />\n<img src=\"https://cdn.wenanzhe.com/img/result.jpg\" alt=\"captcha\" width=\"200\">\n<img src=\"https://cdn.wenanzhe.com/img/result2.jpg\" alt=\"captcha\" width=\"200\">\n<img src=\"https://cdn.wenanzhe.com/img/result4.jpg\" alt=\"captcha\" width=\"200\">\n### 滑块验证码处理\n\nDdddOcr提供两种滑块验证码处理算法：\n\n#### 算法1：边缘匹配\n\n适用于有透明背景的滑块图片，通过边缘检测找到滑块在背景图中的位置：\n\n```python\nimport ddddocr\n\n# 初始化滑块检测对象\nslide = ddddocr.DdddOcr(det=False, ocr=False)\n\n# 读取滑块图和背景图\nwith open('target.png', 'rb') as f:\n    target_bytes = f.read()\n\nwith open('background.png', 'rb') as f:\n    background_bytes = f.read()\n\n# 匹配位置\nres = slide.slide_match(target_bytes, background_bytes)\nprint(f\"滑块位置: {res}\")\n\n# 可视化结果\nbackground = cv2.imdecode(np.frombuffer(background_bytes, np.uint8), cv2.IMREAD_COLOR)\nx1, y1, x2, y2 = res[\"target\"]\n\n# 在背景图上绘制匹配位置\ncv2.rectangle(background, (x1, y1), (x2, y2), (0, 255, 0), 2)\n\n# 显示结果\nplt.figure(figsize=(10, 6))\nplt.imshow(cv2.cvtColor(background, cv2.COLOR_BGR2RGB))\nplt.title(\"滑块匹配结果\")\nplt.axis('off')\nplt.savefig(\"slide_result.jpg\")\nplt.show()\n```\n\n**滑块匹配示例**：\n\n<table>\n  <tr>\n    <td align=\"center\">\n      <img src=\"https://cdn.wenanzhe.com/img/b.png\" width=\"50\"/><br/>\n      <strong>滑块图</strong>\n    </td>\n    <td align=\"center\">\n      <img src=\"https://cdn.wenanzhe.com/img/a.png\" width=\"300\"/><br/>\n      <strong>背景图</strong>\n    </td>\n  </tr>\n</table>\n\n对于没有透明背景的滑块图，可以使用`simple_target`参数：\n\n```python\nres = slide.slide_match(target_bytes, background_bytes, simple_target=True)\n```\n\n#### 算法2：图像差异比较\n\n适用于比较两张图片的不同之处，找出滑块缺口位置：\n\n```python\nimport ddddocr\n\nslide = ddddocr.DdddOcr(det=False, ocr=False)\n\n# 读取带有缺口阴影的图片和完整图片\nwith open('bg.jpg', 'rb') as f:\n    target_bytes = f.read()\n\nwith open('fullpage.jpg', 'rb') as f:\n    background_bytes = f.read()\n\n# 比较差异\nres = slide.slide_comparison(target_bytes, background_bytes)\nprint(res)  # 输出格式：{\"target\": [x, y]}\n```\n\n**图像差异比较示例**：\n\n<table>\n  <tr>\n    <td align=\"center\">\n      <img src=\"https://cdn.wenanzhe.com/img/bg.jpg\" width=\"300\"/><br/>\n      <strong>带缺口阴影的图片</strong>\n    </td>\n    <td align=\"center\">\n      <img src=\"https://cdn.wenanzhe.com/img/fullpage.jpg\" width=\"300\"/><br/>\n      <strong>完整图片</strong>\n    </td>\n  </tr>\n</table>\n\n### 自定义模型导入\n\nDdddOcr支持导入通过[dddd_trainer](https://github.com/sml2h3/dddd_trainer)训练的自定义模型：\n\n```python\nimport ddddocr\n\n# 导入自定义模型\nocr = ddddocr.DdddOcr(\n    det=False, \n    ocr=False, \n    import_onnx_path=\"mymodel.onnx\", \n    charsets_path=\"charsets.json\"\n)\n\nwith open('test.jpg', 'rb') as f:\n    image_bytes = f.read()\n\nres = ocr.classification(image_bytes)\nprint(res)\n```\n\n## 高级用法\n\n### 批量处理\n\n对大量验证码进行批量处理时，保持OCR实例的复用可以显著提高效率：\n\n```python\nimport ddddocr\nimport os\nimport time\n\n# 初始化OCR对象（只需一次）\nocr = ddddocr.DdddOcr()\n\n# 批量处理目录中的所有图片\ndef batch_process(directory):\n    results = {}\n    \n    start_time = time.time()\n    for filename in os.listdir(directory):\n        if filename.endswith(('.png', '.jpg', '.jpeg', '.bmp')):\n            file_path = os.path.join(directory, filename)\n            \n            with open(file_path, 'rb') as f:\n                image = f.read()\n                \n            # 使用同一个OCR实例处理所有图片\n            result = ocr.classification(image)\n            results[filename] = result\n    \n    end_time = time.time()\n    print(f\"处理 {len(results)} 张图片耗时: {end_time - start_time:.2f} 秒\")\n    return results\n\n# 使用示例\nresults = batch_process(\"./captchas/\")\nfor filename, text in results.items():\n    print(f\"{filename}: {text}\")\n```\n\n### 多线程优化\n\n在多线程环境下使用时，应当为每个线程创建独立的OCR实例：\n\n```python\nimport ddddocr\nimport concurrent.futures\nimport os\n\ndef process_image(file_path):\n    # 每个线程创建自己的OCR实例\n    ocr = ddddocr.DdddOcr()\n    \n    with open(file_path, 'rb') as f:\n        image = f.read()\n    \n    result = ocr.classification(image)\n    return os.path.basename(file_path), result\n\ndef parallel_process(directory, max_workers=4):\n    file_paths = [os.path.join(directory, f) for f in os.listdir(directory) \n                 if f.endswith(('.png', '.jpg', '.jpeg', '.bmp'))]\n    \n    results = {}\n    with concurrent.futures.ThreadPoolExecutor(max_workers=max_workers) as executor:\n        future_to_file = {executor.submit(process_image, file_path): file_path for file_path in file_paths}\n        \n        for future in concurrent.futures.as_completed(future_to_file):\n            filename, result = future.result()\n            results[filename] = result\n    \n    return results\n\n# 使用示例\nresults = parallel_process(\"./captchas/\", max_workers=8)\n```\n\n### 验证码预处理\n\n对于干扰较多的验证码，可以先进行预处理再识别：\n\n```python\nimport ddddocr\nimport cv2\nimport numpy as np\nfrom PIL import Image\nimport io\n\ndef preprocess_captcha(image_bytes):\n    # 转换为OpenCV格式\n    nparr = np.frombuffer(image_bytes, np.uint8)\n    img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)\n    \n    # 灰度化\n    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)\n    \n    # 二值化\n    _, binary = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY_INV)\n    \n    # 去除小噪点\n    kernel = np.ones((2, 2), np.uint8)\n    opening = cv2.morphologyEx(binary, cv2.MORPH_OPEN, kernel)\n    \n    # 转回字节流\n    is_success, buffer = cv2.imencode(\".jpg\", opening)\n    processed_bytes = io.BytesIO(buffer).getvalue()\n    \n    return processed_bytes\n\n# 使用示例\nocr = ddddocr.DdddOcr()\n\nwith open(\"noisy_captcha.jpg\", \"rb\") as f:\n    image_bytes = f.read()\n\n# 预处理验证码\nprocessed_bytes = preprocess_captcha(image_bytes)\n\n# 识别处理后的图片\nresult = ocr.classification(processed_bytes)\nprint(f\"验证码识别结果: {result}\")\n```\n\n## 常见问题\n\n1. **初始化速度慢**  \n   首次初始化DdddOcr对象时会加载模型，可能会比较慢，但只需要初始化一次即可。避免在循环中反复初始化。\n   ```python\n   # 错误的用法\n   for img in images:\n       ocr = ddddocr.DdddOcr()  # 每次都初始化，严重影响性能\n       result = ocr.classification(img)\n   \n   # 正确的用法\n   ocr = ddddocr.DdddOcr()  # 只初始化一次\n   for img in images:\n       result = ocr.classification(img)\n   ```\n\n2. **识别准确率不高**  \n   - 尝试使用另一个OCR模型（设置`beta=True`）\n   - 对于特殊验证码，尝试使用颜色过滤功能\n   - 限定识别字符范围（使用`set_ranges`方法）\n   - 对于透明PNG图片，使用`png_fix=True`参数\n\n3. **GPU加速**  \n   可以通过设置`use_gpu=True`和`device_id`参数来启用GPU加速：\n   ```python\n   ocr = ddddocr.DdddOcr(use_gpu=True, device_id=0)\n   ```\n   使用GPU需确保已安装对应的CUDA版本和onnxruntime-gpu库。\n\n4. **如何处理复杂验证码**  \n   对于复杂的验证码，可以尝试以下步骤：\n   - 先使用目标检测功能定位验证码位置\n   - 对检测到的区域进行裁剪\n   - 应用颜色过滤去除干扰\n   - 使用OCR识别处理后的图片\n\n5. **内存占用过高**  \n   如果在同一程序中需要使用多个功能，建议不要同时初始化多个不同功能的实例，而是根据需要初始化：\n   ```python\n   # 根据需要初始化不同的对象\n   if need_ocr:\n       processor = ddddocr.DdddOcr(ocr=True, det=False)\n   elif need_detection:\n       processor = ddddocr.DdddOcr(ocr=False, det=True)\n   ```\n\n6. **参数冲突问题**  \n   当同时设置多个模式参数时，需注意优先级：\n   - `ocr=True`和`det=True`同时设置时，优先使用目标检测模式\n   - `beta=True`和`old=True`同时设置时，使用Beta模型（`old`当前不生效）\n   - 设置`import_onnx_path`时，`ocr`和`det`参数会被忽略\n\n7. **支持的图片格式**  \n   ddddocr支持多种图片格式：\n   - JPG/JPEG\n   - PNG (带透明通道时可配合`png_fix=True`)\n   - BMP\n   - GIF (仅识别第一帧)\n   \n   对于不常见格式或Base64编码的图片，可以先转换为bytes：\n   ```python\n   # Base64编码图片处理\n   import base64\n   image_bytes = base64.b64decode(base64_str)\n   result = ocr.classification(image_bytes)\n   ```\n\n8. **多线程并发问题**  \n   在多线程环境下使用时，每个线程应当创建独立的OCR实例，否则可能导致识别结果错乱。\n\n## 项目技术支持\n\n本项目基于[dddd_trainer](https://github.com/sml2h3/dddd_trainer)训练所得，训练底层框架为PyTorch，推理底层依赖于[onnxruntime](https://pypi.org/project/onnxruntime/)。\n\n## 使用示例\n\n### 完整的验证码识别流程\n\n```python\nimport ddddocr\nimport cv2\nimport numpy as np\nfrom PIL import Image\nimport io\n\n# 初始化OCR对象\nocr = ddddocr.DdddOcr()\n\n# 读取验证码图片\nwith open(\"captcha.jpg\", \"rb\") as f:\n    image_bytes = f.read()\n\n# 转换为OpenCV格式进行预处理\n# img = cv2.imdecode(np.frombuffer(image_bytes, np.uint8), cv2.IMREAD_COLOR)\n\n# 预处理：灰度化、二值化等\n# gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)\n# _, binary = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY_INV)\n\n# 转回字节流\n# is_success, buffer = cv2.imencode(\".jpg\", binary)\n# processed_bytes = io.BytesIO(buffer).getvalue()\n\n# 识别处理后的图片\nresult = ocr.classification(image_bytes)\nprint(f\"验证码识别结果: {result}\")\n```\n\n### 滑块验证码完整示例\n\n```python\nimport ddddocr\nimport cv2\nimport numpy as np\nimport matplotlib.pyplot as plt\n\n# 初始化滑块检测对象\nslide = ddddocr.DdddOcr(det=False, ocr=False)\n\n# 读取滑块图和背景图\nwith open('target.png', 'rb') as f:\n    target_bytes = f.read()\n\nwith open('background.png', 'rb') as f:\n    background_bytes = f.read()\n\n# 匹配位置\nres = slide.slide_match(target_bytes, background_bytes)\nprint(f\"滑块位置: {res}\")\n\n# 可视化结果\nbackground = cv2.imdecode(np.frombuffer(background_bytes, np.uint8), cv2.IMREAD_COLOR)\nx1, y1, x2, y2 = res[\"target\"]\n\n# 在背景图上绘制匹配位置\ncv2.rectangle(background, (x1, y1), (x2, y2), (0, 255, 0), 2)\n\n# 显示结果\nplt.figure(figsize=(10, 6))\nplt.imshow(cv2.cvtColor(background, cv2.COLOR_BGR2RGB))\nplt.title(\"滑块匹配结果\")\nplt.axis('off')\nplt.savefig(\"slide_result.jpg\")\nplt.show()\n```\n\n## API 服务\n\nDdddOcr 提供了一键启动 API 服务的功能，可以通过 RESTful API 的方式访问 DdddOcr 的所有功能。\n\n### 命令行启动 API 服务\n\n```bash\n# 使用默认配置启动 API 服务\npython -m ddddocr api\n\n# 指定 API 服务配置\npython -m ddddocr api --host 0.0.0.0 --port 8000 --workers 4\n\n# 配置 OCR 功能\npython -m ddddocr api --ocr true --beta true\n\n# 配置目标检测功能\npython -m ddddocr api --ocr false --det true\n```\n\n> **提示**：如果直接运行 `python -m ddddocr.api`，默认会绑定在 `127.0.0.1`，可通过环境变量 `DDDDOCR_HOST` 覆盖。\n\n### API 命令行参数说明\n\n| 参数名 | 类型 | 默认值 | 说明 |\n|-------|------|-------|------|\n| `--host` | 字符串 | 0.0.0.0 | API 服务主机地址（`python -m ddddocr api` 默认） |\n| `--port` | 整数 | 8000 | API 服务端口 |\n| `--workers` | 整数 | 1 | API 服务工作进程数 |\n| `--ocr` | 布尔值 | true | 是否启用 OCR 功能 |\n| `--det` | 布尔值 | false | 是否启用目标检测功能 |\n| `--old` | 布尔值 | false | 是否使用旧版 OCR 模型 |\n| `--beta` | 布尔值 | false | 是否使用 Beta 版 OCR 模型 |\n| `--use-gpu` | 布尔值 | false | 是否使用 GPU 加速 |\n| `--device-id` | 整数 | 0 | GPU 设备 ID |\n| `--show-ad` | 布尔值 | true | 是否显示广告 |\n| `--import-onnx-path` | 字符串 | \"\" | 自定义模型路径 |\n| `--charsets-path` | 字符串 | \"\" | 自定义字符集路径 |\n\n### 使用 Docker 运行 API 服务\n\n#### 构建并运行 Docker 镜像\n\n```bash\n# 构建 Docker 镜像\ndocker build -t ddddocr-api .\n\n# 运行 Docker 容器\ndocker run -d --name ddddocr-api -p 8000:8000 ddddocr-api\n\n# 使用自定义配置运行\ndocker run -d --name ddddocr-api \\\n  -p 8000:8000 \\\n  -e DDDDOCR_OCR=true \\\n  -e DDDDOCR_BETA=true \\\n  -e DDDDOCR_WORKERS=4 \\\n  ddddocr-api\n```\n\n#### 使用 Docker Compose 运行 API 服务\n\n```bash\n# 使用默认配置启动\ndocker-compose up -d\n\n# 使用自定义配置启动\nDDDDOCR_OCR=true DDDDOCR_BETA=true DDDDOCR_WORKERS=4 docker-compose up -d\n```\n\n### API 接口说明\n\nAPI 服务提供了以下接口：\n\n#### 1. 文字识别接口 (OCR)\n\n```\nPOST /ocr\n```\n\n请求体：\n\n```json\n{\n  \"image\": \"图片的Base64编码字符串\",\n  \"probability\": false,\n  \"colors\": [],\n  \"custom_color_ranges\": null\n}\n```\n\n响应：\n\n```json\n{\n  \"result\": \"识别到的文字\",\n  \"processing_time\": 0.123\n}\n```\n\n> **注意**：当 `probability=true` 时，API 会返回 `result` 为一个字典，包含 `charsets` 与 `probability` 字段，结构与本地 `classification(probability=True)` 一致。\n\n#### 2. 目标检测接口\n\n```\nPOST /det\n```\n\n请求体：\n\n```json\n{\n  \"image\": \"图片的Base64编码字符串\"\n}\n```\n\n响应：\n\n```json\n{\n  \"result\": [\n    [x1, y1, x2, y2],\n    ...\n  ],\n  \"processing_time\": 0.123\n}\n```\n\n#### 3. 滑块匹配接口\n\n```\nPOST /slide_match\n```\n\n请求体：\n\n```json\n{\n  \"target_image\": \"目标图片的Base64编码字符串\",\n  \"background_image\": \"背景图片的Base64编码字符串\",\n  \"simple_target\": false,\n  \"flag\": false\n}\n```\n\n响应：\n\n```json\n{\n  \"result\": {\n    \"target_x\": 0,\n    \"target_y\": 0,\n    \"target\": [x1, y1, x2, y2]\n  },\n  \"processing_time\": 0.123\n}\n```\n\n#### 4. 滑块比较接口\n\n```\nPOST /slide_comparison\n```\n\n请求体：\n\n```json\n{\n  \"target_image\": \"目标图片的Base64编码字符串\",\n  \"background_image\": \"背景图片的Base64编码字符串\"\n}\n```\n\n响应：\n\n```json\n{\n  \"result\": {\n    \"target\": [x, y]\n  },\n  \"processing_time\": 0.123\n}\n```\n\n#### 5. 设置字符范围接口\n\n```\nPOST /set_charset_range\n```\n\n请求体：\n\n```json\n{\n  \"charset_range\": [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"]\n}\n```\n\n响应：\n\n```json\n{\n  \"result\": \"字符范围设置成功\",\n  \"charset_range\": [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"],\n  \"processing_time\": 0.123\n}\n```\n\n\n#### 6. 健康检查接口\n\n```\nGET /health\n```\n\n响应：\n\n```json\n{\n  \"status\": \"ok\",\n  \"timestamp\": 1628765432.1234\n}\n```\n\n#### 文件上传接口\n\n所有上述接口都支持通过表单上传文件的方式提交请求。例如：\n\n```\nPOST /ocr/file\n```\n\n可以通过表单字段上传图片文件。\n\n### API 客户端示例\n\n#### Python 示例 (Base64编码方式)\n\n```python\nimport requests\nimport base64\n\n# 读取图片文件并Base64编码\nwith open(\"captcha.png\", \"rb\") as f:\n    img_base64 = base64.b64encode(f.read()).decode()\n\n# 发送OCR请求\nurl = \"http://localhost:8000/ocr\"\nresponse = requests.post(url, json={\"image\": img_base64})\n\n# 处理响应\nresult = response.json()\nprint(f\"识别结果: {result['result']}\")\n```\n\n#### Python 示例 (文件上传方式)\n\n```python\nimport requests\n\n# 准备文件\nfiles = {\"file\": open(\"captcha.png\", \"rb\")}\n\n# 发送OCR请求\nurl = \"http://localhost:8000/ocr/file\"\nresponse = requests.post(url, files=files)\n\n# 处理响应\nresult = response.json()\nprint(f\"识别结果: {result['result']}\")\n```\n\n### Docker 环境变量配置参考\n\n| 环境变量名 | 默认值 | 说明 |\n|-----------|-------|------|\n| `DDDDOCR_HOST` | 0.0.0.0（CLI 默认）/ 127.0.0.1（直接运行 `python -m ddddocr.api` 默认） | API 服务主机地址 |\n| `DDDDOCR_PORT` | 8000 | API 服务端口 |\n| `DDDDOCR_WORKERS` | 1 | API 服务工作进程数 |\n| `DDDDOCR_OCR` | true | 是否启用 OCR 功能 |\n| `DDDDOCR_DET` | false | 是否启用目标检测功能 |\n| `DDDDOCR_OLD` | false | 是否使用旧版 OCR 模型 |\n| `DDDDOCR_BETA` | false | 是否使用 Beta 版 OCR 模型 |\n| `DDDDOCR_USE_GPU` | false | 是否使用 GPU 加速 |\n| `DDDDOCR_DEVICE_ID` | 0 | GPU 设备 ID |\n| `DDDDOCR_SHOW_AD` | true | 是否显示广告 |\n| `DDDDOCR_IMPORT_ONNX_PATH` | \"\" | 自定义模型路径 |\n| `DDDDOCR_CHARSETS_PATH` | \"\" | 自定义字符集路径 |\n\n## 许可证\n\n本项目采用MIT许可证，详情请参阅[LICENSE](https://github.com/sml2h3/ddddocr/blob/master/LICENSE)文件。 \n## 输入与输出校验说明\n\n- **图片合法性**：所有 Base64 与文件上传都会做尺寸、格式与大小校验（默认上限 8192 KB、最长边 4096px，可在实例化 `DdddOcr(max_image_bytes=..., max_image_side=...)` 时自定义），异常时返回 400。\n- **允许格式**：PNG / JPEG / JPG / WEBP / BMP / GIF / TIFF。\n- **输入类型**：本地调用支持 `bytes/bytearray`、Base64 字符串、文件路径或 `PIL.Image`。\n- **类型约束**：`DdddOcr` 的公开方法会校验布尔/整数参数，`FastAPI` 层也通过 Pydantic 验证请求体，错误会带具体字段。\n- **统一异常**：核心库新增 `DdddOcrInputError` / `InvalidImageError`，API 会把这些异常映射为 400，方便调用方处理。\n- **响应结构**：HTTP 接口现有明确的 `response_model`，文档 (`/docs`) 中可直接查看字段含义。\n- **模式提示**：在 `det=True` 模式下调用 `classification` 会抛出 “当前识别类型为目标检测”。\n\n## 示例库\n\n仓库新增 `examples/` 目录，覆盖本地调用、目标检测和 HTTP 客户端等典型场景：\n\n- `basic_ocr.py`：最小 OCR 示例，可演示概率输出与颜色过滤。\n- `detector.py`：演示如何用 `det=True` 模式返回所有检测框。\n- `api_client.py`：演示如何向 `python -m ddddocr api` 服务发送 JSON 请求。\n- `generate_basic_ocr_cases.py`：生成基础 OCR 测试用例图片。\n\n详细说明见 `examples/README.md`，可结合 README 其他章节快速起步。\n"
  },
  {
    "path": "examples/api_client.py",
    "content": "#!/usr/bin/env python3\n\"\"\"\n调用 API 服务的示例（需要先启动 ddddocr api）\n\n用法:\n  python -m ddddocr api\n  python examples/api_client.py <图片路径>\n  python examples/api_client.py <图片路径> --endpoint http://127.0.0.1:8000/ocr\n  python examples/api_client.py <图片路径> --probability\n\"\"\"\nfrom __future__ import annotations\n\nimport argparse\nimport base64\nimport json\nimport sys\nfrom pathlib import Path\nfrom typing import Any, Dict\n\nsys.path.insert(0, str(Path(__file__).resolve().parents[1]))\n\nimport requests\n\n\ndef build_parser() -> argparse.ArgumentParser:\n    parser = argparse.ArgumentParser(description=\"DdddOcr API 示例客户端\")\n    parser.add_argument(\"image\", type=Path, help=\"待识别图片路径\")\n    parser.add_argument(\n        \"--endpoint\",\n        default=\"http://127.0.0.1:8000/ocr\",\n        help=\"API 接口地址，默认 http://127.0.0.1:8000/ocr\",\n    )\n    parser.add_argument(\n        \"--probability\",\n        action=\"store_true\",\n        help=\"是否请求概率输出\",\n    )\n    return parser\n\n\ndef payload_from_image(path: Path, probability: bool) -> Dict[str, Any]:\n    data = base64.b64encode(path.read_bytes()).decode()\n    return {\n        \"image\": data,\n        \"probability\": probability,\n    }\n\n\ndef main() -> int:\n    parser = build_parser()\n    args = parser.parse_args()\n    if not args.image.exists():\n        parser.error(f\"文件 {args.image} 不存在\")\n\n    payload = payload_from_image(args.image, args.probability)\n    try:\n        response = requests.post(args.endpoint, json=payload, timeout=15)\n    except requests.RequestException as exc:\n        parser.error(f\"请求 API 失败: {exc}\")\n        return 1\n\n    if response.status_code != 200:\n        parser.error(f\"API 返回错误: {response.status_code} {response.text}\")\n        return 1\n\n    print(\"API 返回结果:\")\n    print(json.dumps(response.json(), indent=2, ensure_ascii=False))\n    return 0\n\n\nif __name__ == \"__main__\":\n    raise SystemExit(main())\n"
  },
  {
    "path": "examples/basic_ocr.py",
    "content": "#!/usr/bin/env python3\n\"\"\"\n基本 OCR 识别示例（本地离线）\n\n用法:\n  python examples/basic_ocr.py <图片路径>\n  python examples/basic_ocr.py <图片路径> --probability\n  python examples/basic_ocr.py <图片路径> --colors red green\n  python examples/basic_ocr.py <图片路径> --beta\n  python examples/basic_ocr.py <图片路径> --old\n\"\"\"\nfrom __future__ import annotations\n\nimport argparse\nimport sys\nfrom pathlib import Path\n\nsys.path.insert(0, str(Path(__file__).resolve().parents[1]))\n\nfrom ddddocr import DdddOcr, DdddOcrInputError, InvalidImageError\n\n\ndef build_parser() -> argparse.ArgumentParser:\n    parser = argparse.ArgumentParser(description=\"DdddOcr 本地识别示例\")\n    parser.add_argument(\"image\", type=Path, help=\"待识别图片路径\")\n    parser.add_argument(\n        \"--probability\",\n        action=\"store_true\",\n        help=\"输出每一列的概率分布\",\n    )\n    parser.add_argument(\n        \"--colors\",\n        nargs=\"*\",\n        default=(),\n        help=\"可选：指定需要保留的颜色，例如 red green\",\n    )\n    parser.add_argument(\n        \"--beta\",\n        action=\"store_true\",\n        help=\"使用新版 beta OCR 模型\",\n    )\n    parser.add_argument(\n        \"--old\",\n        action=\"store_true\",\n        help=\"使用旧版 OCR 模型 (beta=False 时有效)\",\n    )\n    return parser\n\n\ndef main() -> int:\n    parser = build_parser()\n    args = parser.parse_args()\n    if not args.image.exists():\n        parser.error(f\"文件 {args.image} 不存在\")\n\n    ocr = DdddOcr(ocr=True, det=False, beta=args.beta, old=args.old, show_ad=False)\n\n    try:\n        data = args.image.read_bytes()\n        if args.probability:\n            result = ocr.classification(\n                data,\n                probability=True,\n                colors=list(args.colors),\n            )\n        else:\n            result = ocr.classification(\n                data,\n                probability=False,\n                colors=list(args.colors),\n            )\n    except (DdddOcrInputError, InvalidImageError) as exc:\n        parser.error(str(exc))\n        return 1\n\n    print(\"识别结果:\")\n    print(result)\n    return 0\n\n\nif __name__ == \"__main__\":\n    raise SystemExit(main())\n"
  },
  {
    "path": "examples/detector.py",
    "content": "#!/usr/bin/env python3\n\"\"\"\n目标检测示例（det=True）\n\n用法:\n  python examples/detector.py <图片路径>\n  python examples/detector.py <图片路径> --use-gpu\n\"\"\"\nfrom __future__ import annotations\n\nimport argparse\nimport sys\nfrom pathlib import Path\nfrom typing import List\n\nsys.path.insert(0, str(Path(__file__).resolve().parents[1]))\n\nfrom ddddocr import DdddOcr, DdddOcrInputError, InvalidImageError\n\n\ndef build_parser() -> argparse.ArgumentParser:\n    parser = argparse.ArgumentParser(description=\"DdddOcr 目标检测示例\")\n    parser.add_argument(\"image\", type=Path, help=\"待检测图片路径\")\n    parser.add_argument(\n        \"--use-gpu\",\n        action=\"store_true\",\n        help=\"如果环境支持，启用 GPU 推理\",\n    )\n    return parser\n\n\ndef format_boxes(boxes: List[List[int]]) -> str:\n    if not boxes:\n        return \"未检测到目标\"\n    lines = [\"检测到的矩形框 (x_min, y_min, x_max, y_max):\"]\n    for idx, (x_min, y_min, x_max, y_max) in enumerate(boxes, 1):\n        lines.append(f\"  #{idx}: ({x_min}, {y_min}, {x_max}, {y_max})\")\n    return \"\\n\".join(lines)\n\n\ndef main() -> int:\n    parser = build_parser()\n    args = parser.parse_args()\n    if not args.image.exists():\n        parser.error(f\"文件 {args.image} 不存在\")\n\n    detector = DdddOcr(ocr=False, det=True, use_gpu=args.use_gpu, show_ad=False)\n\n    try:\n        data = args.image.read_bytes()\n        boxes = detector.detection(img_bytes=data)\n    except (DdddOcrInputError, InvalidImageError) as exc:\n        parser.error(str(exc))\n        return 1\n\n    print(format_boxes(boxes))\n    return 0\n\n\nif __name__ == \"__main__\":\n    raise SystemExit(main())\n"
  },
  {
    "path": "examples/ocr.py",
    "content": "import ddddocr\n\nwith open(\"../samples/yzm2.jpeg\", \"rb\") as f:\n    data = f.read()\n\nocr = ddddocr.DdddOcr(det=True, ocr=False)\n\nresult = ocr.detection(data)\n\nprint(result)"
  },
  {
    "path": "pyproject.toml",
    "content": "[build-system]\nrequires = [\"setuptools>=64\", \"wheel\"]\nbuild-backend = \"setuptools.build_meta\"\n\n[project]\nname = \"ddddocr\"\nversion = \"1.6.1\"\ndescription = \"带带弟弟OCR\"\nreadme = \"README.md\"\nrequires-python = \">=3.10\"\nlicense = { file = \"LICENSE\" }\nauthors = [{ name = \"sml2h3\" }]\nclassifiers = [\n  \"Programming Language :: Python :: 3 :: Only\",\n  \"Programming Language :: Python :: 3.10\",\n  \"Programming Language :: Python :: 3.11\",\n  \"Programming Language :: Python :: 3.12\",\n  \"Programming Language :: Python :: 3.13\",\n  \"License :: OSI Approved :: MIT License\",\n  \"Operating System :: OS Independent\",\n]\ndependencies = [\n  \"numpy\",\n  \"onnxruntime\",\n  \"Pillow\",\n  \"opencv-python; sys_platform == 'win32' or sys_platform == 'darwin'\",\n  \"opencv-python-headless; sys_platform == 'linux'\",\n]\n\n[project.urls]\nHomepage = \"https://github.com/sml2h3/ddddocr\"\n\n[project.optional-dependencies]\napi = [\n  \"fastapi>=0.68.0\",\n  \"uvicorn>=0.15.0\",\n  \"python-multipart>=0.0.5\",\n  \"pydantic>=1.8.0,<3\",\n]\n\n[project.scripts]\nddddocr = \"ddddocr.__main__:main\"\n\n[tool.setuptools]\ninclude-package-data = true\n\n[tool.setuptools.packages.find]\nwhere = [\".\"]\ninclude = [\"ddddocr*\"]\n\n[tool.setuptools.package-data]\nddddocr = [\"*.onnx\", \"logo.png\", \"README.md\"]\n"
  },
  {
    "path": "requirements.txt",
    "content": "numpy>=1.19.0\nPillow>=8.0.0\nonnxruntime>=1.8.0\nopencv-python>=4.5.0; sys_platform == \"win32\" or sys_platform == \"darwin\"\nopencv-python-headless>=4.5.0; sys_platform == \"linux\"\nfastapi>=0.68.0\nuvicorn>=0.15.0\npython-multipart>=0.0.5\npydantic>=1.8.0,<3\nrequests>=2.25.0\n"
  }
]