找回密码
 注register册

QQ登录

只需一步,快速开始

查看: 4196|回复: 0

[〖巧用电脑〗] 使用 pot-desktop 在 Linux 系统上实现类似于翻译器的效果

发表于 2024-4-14 12:00:21 |阅读模式
TDhLRko=YDEFX
本帖最后由 jack1235467 于 2024-4-14 12:23 编辑
[j]YDEFX RPDGU9[/j]
[j]YDEFX RPDGSZ[/j]​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​===前言===
[j]YDEFX RPDGTM[/j]
[j]YDEFX RPDGTW[/j]由于现有翻译器在 Linux 上基本不可用( wine 无   ***下载/download/otomedream/ダウンロード***   常启动/ OCR 时闪退等),Linux 系统上也基本无可用的原生版本视觉小说翻译器,故无奈寻求替代方案
[j]YDEFX RPDGTX[/j]
[j]YDEFX RPDGTS[/j]Linux 系统上较为知名的支持OCR和划词翻译的翻译软件有 crow translate 和 pot-desktop 等。由于 crow translate 不能选择翻译效果更好的  DeepL 或者 OpenAI API 或 TogetherAI 的 API 等 进行翻译,且缺失一些高级特(xing),故采用更方便的 pot-desktop
[j]YDEFX RPDGU5[/j]
[j]YDEFX RPDGTN[/j]获取相关软件和脚本
[j]YDEFX RPDGUD[/j]
[j]YDEFX RPDGTY[/j]首先安装如下包:[j]YDEFX RPDGTA[/j]
pot-desktop,实际包名请查询 Linux 发行版的官方仓库,NixOS 上的包名是 pot
[j]YDEFX RPDGU0[/j]slurp[j]YDEFX RPDGTC[/j]
grim
[j]YDEFX RPDGT6[/j]imagemagick
[j]YDEFX RPDGUJ[/j]bc
[j]YDEFX RPDGTI[/j]
[j]YDEFX RPDGT5[/j]同时需要下载 TEXTCLEANER 脚本(用于截图后在 OCR 前的预处理): http://www.fmwconcepts.com/imagemagick/textcleaner/index.php
[j]YDEFX RPDGT4[/j]
[j]YDEFX RPDGTU[/j]可能缺失依赖项,请自行补齐[j]YDEFX RPDGTJ[/j]

[j]YDEFX RPDGTI[/j]截图方案
[j]YDEFX RPDGUA[/j]
[j]YDEFX RPDGU8[/j]为了实现自动化 OCR 而不是手动截图,需要通过 API 调用自动拉起该软件进行翻译,启动时软件会自动   ***下载/download/otomedream/ダウンロード***   60828 端口[j]YDEFX RPDGU2[/j]
例如使用如下命令
[j]YDEFX RPDGUI[/j]
  1. curl “127.0.0.1:60828/ocr_translate?screenshot=false”
复制代码
并保证需要 OCR 翻译的图片路径为 $CACHE/com.pot-app.desktop/pot_screenshot_cut.png 即可拉起 pot-desktop 进行 OCR 翻译,其他使用方式请自行查询官方文档
[j]YDEFX RPDGTF[/j]
[j]YDEFX RPDGU2[/j]由于本人使用 Sway WM 作为桌面环境,且 Wayland 中截图的方式与 X11 中不同,本文采用 Wayland 中可用的方式,X11 环境中原理类似
[j]YDEFX RPDGT3[/j]
[j]YDEFX RPDGUL[/j]通常的截图方案为
  1. grim -g “$(slurp)”
复制代码
运行 slurp 命令即可进行屏幕区域选择,而 grim 则负责完成截图操作
[j]YDEFX RPDGTA[/j]
[j]YDEFX RPDGU2[/j]在用作翻译器时,由于视觉小说本身文字位置相对固定,所以我们通过 slurp 找出截图区域后即可自动化该流程
[j]YDEFX RPDGU5[/j]假设我们得到了 “482,570 342x135” 的截图区域,只需如下使用即可
  1. grim -g “482,570 342x135”
复制代码

[j]YDEFX RPDGT8[/j]使用下述命令即可完成针对 pot 的截图,没有相关文件夹请提前创建
  1. grim -g “482,570 342x135” ~/com.pot-app.desktop/pot_screenshot_cut.png
复制代码
[j]YDEFX RPDGTS[/j]
但是由于效果较差,需要进行预处理,暂时保存为任意文件:
  1. grim -g “482,570 342x135” ~/com.pot-app.desktop/pot_screenshot_tmp.png
复制代码

[j]YDEFX RPDGSX[/j]
[j]YDEFX RPDGT7[/j]图像预处理
[j]YDEFX RPDGTZ[/j][j]YDEFX RPDGTQ[/j]
由于本地 OCR 针对任意背景的文本识别效果较差,需要根据具体场景实现图像的预处理
[j]YDEFX RPDGUJ[/j]复杂方案很多,常见有利用 python opencv 等,此处为了方便 逃课 选用了基于 imagemagick 的 TEXTCLEANER 脚本
[j]YDEFX RPDGTG[/j]目前在文字背景较为绚丽的情况下使用 -g -e none -f 15 -o 20 参数似乎效果不错,但在背景为暗色时候效果不佳(感觉是降噪太狠了),具体请根据文档酌情调整[j]YDEFX RPDGSY[/j]
如采用上述参数,则可完成图像处理部分
[j]YDEFX RPDGT9[/j]
  1. /path/to/textcleaner -g -e none -f 15 -o 20 ~/.cache/com.pot-app.desktop/pot_screenshot_tmp.png ~/.cache/com.pot-app.desktop/pot_screenshot_cut.png
复制代码

[j]YDEFX RPDGUL[/j]如果采用 NixOS,由于缺失依赖项我懒得找了,我直接选择了 steam-run 方式获得一个较为常规的运行环境,通过覆盖steam包获得剩下的依赖项 ( gamescope vkbasalt zenity 用于本人日常游戏,与本主题无关)[j]YDEFX RPDGT8[/j]
  1. programs.steam.package = pkgs.steam.override {
    [j]YDEFX RPDGU8[/j]
  2.     extraPkgs = pkgs: with pkgs; [
    [j]YDEFX RPDGUK[/j]
  3.       gamescope
    [j]YDEFX RPDGTX[/j]
  4.       vkbasalt[j]YDEFX RPDGT7[/j]
  5.       gnome.zenity[j]YDEFX RPDGTH[/j]
  6.       imagemagick
    [j]YDEFX RPDGTM[/j]
  7.       bc[j]YDEFX RPDGTU[/j]
  8.     ];[j]YDEFX RPDGT2[/j]
  9.   };
复制代码

[j]YDEFX RPDGU4[/j]
[j]YDEFX RPDGTF[/j]整理[j]YDEFX RPDGU9[/j]

[j]YDEFX RPDGT6[/j]简要可以概括为
[j]YDEFX RPDGU2[/j]
  1. grim -g “482,570 342x135” ~/com.pot-app.desktop/pot_screenshot_tmp.png && (steam-run) /path/to/textcleaner -g -e none -f 15 -o 20 ~/.cache/com.pot-app.desktop/pot_screenshot_tmp.png ~/.cache/com.pot-app.desktop/pot_screenshot_cut.png && curl “127.0.0.1:60828/ocr_translate?screenshot=false”
复制代码

[j]YDEFX RPDGTU[/j]
[j]YDEFX RPDGUC[/j]无限循环[j]YDEFX RPDGU2[/j]

[j]YDEFX RPDGTL[/j]采用下列方式 while true; do   ***下载/download/otomedream/ダウンロード***     ***下载/download/otomedream/ダウンロード***   ; done 即可
[j]YDEFX RPDGUF[/j]例如

  1. [j]YDEFX RPDGT5[/j]
  2. while true
    [j]YDEFX RPDGTR[/j]
  3.     do
    [j]YDEFX RPDGUE[/j]
  4.         sleep 2s
    [j]YDEFX RPDGTE[/j]
  5.         grim -g “138,703 935x229” ~/.cache/com.pot-app.desktop/pot_screenshot_tmp.png && steam-run ~/.config/sway/textcleaner -g -e none -f 15 -o 20 ~/.cache/com.pot-app.desktop/pot_screenshot_tmp.png ~/.cache/com.pot-app.desktop/pot_screenshot_cut.png && curl “127.0.0.1:60828/ocr_translate?screenshot=false”
    [j]YDEFX RPDGTK[/j]
  6.     done
复制代码
由于费用考虑,可适当增加 sleep 间隔
[j]YDEFX RPDGTV[/j][j]YDEFX RPDGU5[/j]
总结
[j]YDEFX RPDGUJ[/j]
[j]YDEFX RPDGU4[/j]归根结底,问题基本是自动化进行 截图->预处理->调用翻译 等步骤,采用类似方案也可达到同样效果,可自行尝试
[j]YDEFX RPDGUK[/j][j]YDEFX RPDGT7[/j]

[j]YDEFX RPDGU1[/j]最终的翻译效果图:
[j]YDEFX RPDGTV[/j]

[j]YDEFX RPDGTM[/j]                               
需要注册成功才可查看大图

[j]YDEFX RPDGTU[/j]
[j]YDEFX RPDGTP[/j]关于图片处理:
[j]YDEFX RPDGTZ[/j]一般要达到足够清晰的效果才可完成本地 OCR
[j]YDEFX RPDGTF[/j]处理前:
[j]YDEFX RPDGTD[/j]
[j]YDEFX RPDGTF[/j]
                               
需要注册成功才可查看大图

[j]YDEFX RPDGTT[/j]处理后:
[j]YDEFX RPDGTB[/j]

[j]YDEFX RPDGT4[/j]                               
需要注册成功才可查看大图
[j]YDEFX RPDGTW[/j]
pot进一步处理:[j]YDEFX RPDGT6[/j]
[j]YDEFX RPDGTT[/j]
                               
需要注册成功才可查看大图

[j]YDEFX RPDGTG[/j]效果依然不是很好,需要更多调整
【论坛搜索关键词】:🔍使用 , 🔍pot-desktop , 🔍Linux , 🔍效果

其他会员正在看的帖子

您需要登录后才可以回帖 登录 | 注register册

本版积分规则

银行|😀|手机版|Archiver|联系 翼梦管理员|联系 舞城管理员|☆翼の夢★舞の城☆聯盟 ( 苏ICP备13061143号 ) | 繁體中文化      

苏公网安备 32011302320404号

GMT+8, 2025-1-21 02:54 , Processed in 0.420754 second(s), 22 queries , Gzip On.      

快速回复 返回顶部 返回列表 立刻刷新