Mac实现截图OCR输出文字功能

1.为什么要这个功能

    工作中会经常遇到需要识别一个图片中的文本内容,需要快速的OCR识别,从而提高工作效率;

2.如何实现

     snipaste + pngpaste + tesseract

  1. snipaste 用于截图
  2. pngpaste 用于读取剪贴板内容
  3. tesseract 用于对输入的图片做OCR识别

3.安装流程与使用

     安装 pngpaste 和 tesseract 需要预先安装brew,国内安装brew可以参考brew官网直接执行/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"需要代理,且不一定一次成功,如果失败的话,需要多执行几次;
安装完brew后,需要更新brew brew udpate --verbose, 如果遇到fatal: Could not resolve HEAD to a revision , 进入到出问题的目录(笔者是/opt/homebrew/Library/Taps/homebrew/homebrew-core目录),手动拉取代码

git fetch --prune origin
git pull --rebase origin master

成功之后,还需要设置brew的仓库镜像,可参考清华大学镜像

export HOMEBREW_API_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles/api"
export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles"
export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git"
export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git"
export HOMEBREW_PIP_INDEX_URL="https://pypi.tuna.tsinghua.edu.cn/simple"

之后就可以安装pngpaste 和 tesseract,创建别名alias pocr='pngpaste - | tesseract stdin stdout',然后就可以进行截图,之后输入pocr解析图片内容了

4.使用效果

     截图:

     识别结果:

5.中文支持

     默认安装的tesseract只支持英文识别,如果需要中文识别的,首先提前下载简体中文的训练数据,我是通过brew install tesseract-lang安装的,可以看到/opt/homebrew/share/tessdata目录多处很多数据文件,不仅仅是中文的。
     添加完中文训练数据后,还需要在ocr识别命令上加上识别指定语言参数tesseract -l eng+chi_sim,改完后,我们的别名是这样子的alias pocr='pngpaste - | tesseract stdin stdout -l eng+chi_sim',可以看下效果。

     中文输出有很多空格,可以通过添加参数 -c preserve_interword_spaces=1解决, 最终的命令就是pngpaste - | tesseract stdin stdout -l eng+chi_sim -c preserve_interword_spaces=1

6.待改进

     识别精度不高,经常出现1识别成I,0识别成O的情况,这个可能需要自己训练调优什么的,有兴趣可以研究下tesseract的GITHUB官网的使用手册。









posted on 2023-02-10 18:20  mindSucker  阅读(391)  评论(0编辑  收藏  举报