面向中文学习者的日语句子解析工具。输入一句日语,应用会拆解词汇、读音、罗马音、词性、整句翻译和单词详解,并提供图片识别、朗读和 AI 日语助手。
体验链接 https://nihongodemo.howen.ink/
- 句子解析:分词、假名、罗马音、词性标记和中文释义。
- 单词详解:点击词汇查看读音、释义、语法角色和上下文解释。
- 整句翻译:生成中文整句翻译,方便快速理解语境。
- 图片识别:上传或粘贴图片提取日语文字;DeepSeek 使用独立视觉模型进行 OCR。
- 朗读:支持 Edge TTS 和 Gemini TTS。
- AI 日语助手:围绕日语语法、词汇、文化和当前句子提问。
- 双模型服务商:文本模型支持 Gemini 和 DeepSeek,默认使用 DeepSeek。
- 本地浏览器设置:用户可以在设置弹窗中为 Gemini / DeepSeek 分别填入自己的 API Key。
- 可选访问密码:部署后可用
CODE做简单访问控制。 - 可选 Umami 统计:配置环境变量后自动加载 Umami 跟踪脚本。
- Docker 部署:支持 Docker Compose 和 Docker Hub 多架构镜像。
| 能力 | 默认模型 / 服务 | 说明 |
|---|---|---|
| 文本解析 | deepseek-v4-flash / deepseek-v4-pro |
默认文本服务商是 DeepSeek,可在设置中切换 Flash / Pro;DeepSeek 请求默认关闭思考模式。 |
| Gemini 文本解析 | gemini-3.7-flash / gemini-3.5-flash-lite |
可在设置中切换 Gemini Flash / Flash-Lite;3.7 Flash 使用 Low 推理档,Flash-Lite 使用 Minimal。 |
| 图片识别 | deepseek-v4-flash-vision-exp / Gemini |
选择 DeepSeek 时,视觉实验模型只用于 OCR 且固定关闭思考;普通文字解析仍使用所选的 Flash / Pro。 |
| 朗读 | Edge TTS / Gemini TTS | 默认使用 Edge TTS;Gemini TTS 需要 Gemini API Key。 |
git clone https://github.com/cokice/japanese-analyzer.git
cd japanese-analyzer
npm install复制环境变量模板:
Copy-Item .env.example .env.local编辑 .env.local。如果只想先跑文本解析,建议先配置 DeepSeek:
DEEPSEEK_API_KEY=your_deepseek_api_key
DEEPSEEK_API_URL=https://api.deepseek.com/chat/completions
GEMINI_API_KEY=your_gemini_api_key
GEMINI_API_URL=https://generativelanguage.googleapis.com/v1beta/openai/chat/completions
CODE=
NEXT_PUBLIC_UMAMI_SRC=
NEXT_PUBLIC_UMAMI_WEBSITE_ID=启动开发环境:
npm run dev打开 http://127.0.0.1:3000。
| 变量 | 必填 | 用途 |
|---|---|---|
DEEPSEEK_API_KEY |
推荐 | DeepSeek API Key。用于默认文本解析及 DeepSeek 图片 OCR。 |
DEEPSEEK_API_URL |
可选 | DeepSeek OpenAI 兼容接口地址;留空使用官方默认地址。 |
GEMINI_API_KEY |
可选 | Gemini API Key。用于 Gemini 文本解析、图片识别和 Gemini TTS。 |
GEMINI_API_URL |
可选 | Gemini OpenAI 兼容接口地址;留空使用官方默认地址。 |
CODE |
可选 | 访问密码。设置后访问应用需要先输入密码。 |
NEXT_PUBLIC_UMAMI_SRC |
可选 | Umami 脚本地址,例如 https://cloud.umami.is/script.js。 |
NEXT_PUBLIC_UMAMI_WEBSITE_ID |
可选 | Umami Website ID。需要和 NEXT_PUBLIC_UMAMI_SRC 同时配置才会启用。 |
说明:
DEEPSEEK_API_KEY和GEMINI_API_KEY是服务器端默认密钥,不会暴露到前端。- 用户也可以在右上角设置中填写自己的 Key,设置仅保存在浏览器本地。
- Umami 统计通过本地 loader 读取运行时环境变量;两个
NEXT_PUBLIC_UMAMI_*都为空时不会加载 Umami。 - 启用 Umami 后会记录隐私最小化的使用事件:
analyze_sentence只包含解析provider/model、是否使用图片识别、图片识别模型、是否使用 TTS、TTS 模型;image_text_extract、tts_speech、word_detail_click只包含对应功能的 provider/model 元数据。事件不包含输入文本、图片内容、提取结果、词汇内容、翻译结果、错误内容或 API Key。 - 不要提交
.env.local,仓库已经默认忽略本地环境变量文件。
如果你使用 Claude Code 或 Codex 等 AI 编程助手,可以直接把下面的提示词发给它,让它在你的 VPS 上完成部署:
# 部署任务:japanese-analyzer
请帮我在这台 VPS 上用 Docker 部署 japanese-analyzer(一个日语句子解析 Web 应用)。
## 目标
- 使用 Docker Hub 镜像 `howenhowen/japanese-analyzer:latest`(多架构,amd64/arm64 都有)
- 容器监听 3002,映射宿主机 3002 端口
- 容器名 `japanese-analyzer`,设置 `--restart unless-stopped`
## 环境变量
通过环境变量注入,不要写进镜像:
- `DEEPSEEK_API_KEY`:必填,默认文本解析及图片 OCR 用 DeepSeek(我会提供,或提示我填入)
- `GEMINI_API_KEY`:可选,用于 Gemini 文本/图片识别和 Gemini TTS,没有就跳过
- `CODE`:可选访问密码,留空即不启用
- `DEEPSEEK_API_URL` / `GEMINI_API_URL`:留空使用官方默认地址即可
推荐用 docker compose 管理:仓库里有 `docker-compose.hub.yml`,配合 `.env.production`(从 `.env.production.example` 复制)使用;或者直接 `docker run` 也行,你看哪个更合适。
## 域名与 HTTPS(询问后再做)
容器跑通后,询问我是否需要绑定域名并配置 HTTPS 反向代理:
- 如果我说不需要,直接用 `http://VPS_IP:3002` 访问即可,跳过本节
- 如果我提供域名(例如 `nihongodemo.howen.ink`):
- 先检查服务器上是否已有 Nginx / Caddy,优先复用现有的,不要重复装一套
- 都没有的话推荐 Caddy(自动签发和续期 Let's Encrypt 证书,配置最简单)
- 反代到 `127.0.0.1:3002`,配置 HTTPS 并把 HTTP 重定向到 HTTPS
- 提醒我先把域名 A 记录解析到这台 VPS,并确认 80/443 端口在防火墙/安全组已放行
- 配好后用 `curl -I https://域名` 验证证书和反代是否正常
## 验收标准
1. 容器正常运行,`docker logs` 无报错
2. `curl http://127.0.0.1:3002` 能返回页面
3. 重启服务器后容器能自动拉起
4. (如配置了域名)https 访问正常,证书有效
## 注意
- 如果 3002 端口被占用,先告诉我再换端口,不要擅自杀掉占用进程
- API Key 属于敏感信息,不要 echo 到日志或写入不必要的文件
- 修改现有 Nginx/Caddy 配置前先备份原文件
- 部署完成后告诉我访问地址和后续更新镜像的命令(pull → rm → run 或 compose pull && up -d)部署步骤:
- Fork 或导入本仓库到 Vercel。
- 在 Vercel 项目的
Settings -> Environment Variables中配置环境变量。 - 至少配置
DEEPSEEK_API_KEY,这样默认文本解析可以直接使用。 - DeepSeek 图片 OCR 复用
DEEPSEEK_API_KEY;如需 Gemini 文本/图片识别或 Gemini TTS,再配置GEMINI_API_KEY。 - 如需 Umami 统计,同时配置
NEXT_PUBLIC_UMAMI_SRC和NEXT_PUBLIC_UMAMI_WEBSITE_ID。 - 重新部署项目。
项目提供 Docker Hub 多架构镜像,支持 linux/amd64 和 linux/arm64。容器默认监听 3002,下面示例会把宿主机 3002 映射到容器 3002。
拉取镜像:
docker pull howenhowen/japanese-analyzer:latest启动容器:
docker run -d \
--name japanese-analyzer \
--restart unless-stopped \
-p 3002:3002 \
-e DEEPSEEK_API_KEY="your_deepseek_api_key" \
-e GEMINI_API_KEY="your_gemini_api_key" \
-e CODE="" \
howenhowen/japanese-analyzer:latest访问:
http://your-vps-ip:3002
如果只使用 DeepSeek 文本解析和图片 OCR,可以不填 GEMINI_API_KEY;如果不需要访问密码,可以保持 CODE=""。不需要自定义接口地址时,DEEPSEEK_API_URL 和 GEMINI_API_URL 也可以不用填,应用会使用默认地址。
如需启用 Umami,启动容器时额外加入:
-e NEXT_PUBLIC_UMAMI_SRC="https://cloud.umami.is/script.js" \
-e NEXT_PUBLIC_UMAMI_WEBSITE_ID="your_umami_website_id" \查看日志:
docker logs -f japanese-analyzer更新镜像:
docker pull howenhowen/japanese-analyzer:latest
docker rm -f japanese-analyzer
docker run -d \
--name japanese-analyzer \
--restart unless-stopped \
-p 3002:3002 \
-e DEEPSEEK_API_KEY="your_deepseek_api_key" \
-e GEMINI_API_KEY="your_gemini_api_key" \
-e CODE="" \
howenhowen/japanese-analyzer:latestnpm run dev # 本地开发
npm test # 运行 API / provider 配置测试
npm run build # 生产构建,发布前建议先跑## 致谢
- 感谢 [LINUX DO](https://linux.do/) 社区的支持与推广
## 许可证
本项目基于 [MIT License](./LICENSE) 发布。



