千呼万唤,Snipaste 这款截图贴图软件终于支持 OCR 功能。OCR 可以识别图片上的文字,跟截图软件一起工作再合适不过了。在更新日志引用的这个 issue 下,我看到 Coxxs 提供了一个改进的 OCR 组件。原来对于 Windows,Snipaste 默认的系统内置选项会调用旧版的微软组件,准确率低、识别率慢。然而我使用以后觉得新版也差强人意,尝试看看能不急集成微信 PC 版的 OCR。
答案是可以。Coxxs 的项目实际利用了 Snipaste 的第二种方式:Tesseract 对接。从 Snipaste 界面可以看出其命令行参数默认是 stdin stdout。我实际下载了 Tesseract 使用,速度不快,结果有很多空格,差点意思。但是重要的是可以用帮助命令看出参数含义,结论是 Snipaste 将图片传给标准输入 stdin,OCR 文本结果传给标准输出 stdout。那么我只要写个程序在中间调用微信 OCR 就好了。
受 UDPspeeder 启发,我一直想有一个 TCP 的带 XOR(异或)加密的端口转发程序。某些情况下我不希望流量完全明文传输,但也不至于用到 AES 甚至 TLS 那样强加密通道的程度。只需要简单的混淆,那 XOR 非常好使。不过似乎没有现成程序,我得自己编写一个。最近终于又出现实际用例,搜了 GitHub 没发现符合需求的,索性熬夜写了一个,命名为 xavior。
XOR 是一种基本位运算。两个相同的位(二进制数)结果为 0,不同为 1。它是一些现代加密算法的基本逻辑单元,也可独立视作加密算法。并且,明文按位异或密钥得到密文,再按位异或即得明文。所以不仅加密、解密密钥相同,函数也是完全一样的。作为加密算法,XOR 非常快,也很不安全。理论上,只要密钥长度大于消息长度,且密钥每次随机产生,XOR 可以获得完美保密性。但这种一次性密码本不太现实。所以 XOR 不被视作正经安全的加密算法。但如果我们只是稍微象征性地加密、混淆流量,那 XOR 实现简单、效率高,还算是可取。