• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

scr2txt: 通过截屏快速实现图片转文字,基于百度飞桨paddleocr,支持打包为exe程序 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

scr2txt

开源软件地址:

https://gitee.com/lazytech_group/scr2txt

开源软件介绍:

scr2txt

介绍

通过截屏快速实现图片转文字、图片转表格,基于百度飞桨paddleocr

软件架构

py3.7 实现,基于百度飞桨paddleocr平台,主要采用

  • pyqt
  • pillow

直接下载

  • 1.0 版本 src2txt.zip 提取码: ui9f
    • 支持文字识别
  • 1.1 版本 src2txt_v1.1.zip 提取码: yrmn
    • 支持文字+表格识别
    • 文字识别,
    • 表格识别,
  • win10 测试,其他系统 暂未测试

使用说明

解压缩后,直接运行src2txt.exe

  1. alt+c,选择文字截屏,结果直接保存在剪贴板
  2. alt+t, 选择表格截屏,以excel文件存放在table目录内
  3. alt+q,退出
  • 注意: 第一次运行会在线下载识别模型,需要稍等一会

安装教程

  1. 安装必要依赖包
    pip install -r requirements.txtpip install -e packages/Shapely-1.7.1-cp37-cp37m-win_amd64.whl pip install -e packages/layoutparser-0.0.0-py3-none-any.whl
  2. 软件打包
    1. 调试打包
    SET PADDLEOCR_PATH=C:\Users\leo\anaconda3\envs\paddleocr\Lib\site-packagesSET CODE_PATH=C:\workspaces\tools\scr2txtpyinstaller --clean -y -D --clean --exclude matplotlib -p %PADDLEOCR_PATH%\paddle\libs;%PADDLEOCR_PATH%\paddleocr;%PADDLEOCR_PATH%\paddleocr\ppocr\utils\e2e_utils;%PADDLEOCR_PATH%\paddleocr\ppstructure\table scr2txt.py -i scr2txt.ico --add-binary %PADDLEOCR_PATH%\paddle\libs;. --add-data %CODE_PATH%\scr2txt.ico;. --add-data %PADDLEOCR_PATH%\paddleocr\ppocr\utils\ppocr_keys_v1.txt;.\ppocr\utils --add-data %PADDLEOCR_PATH%\paddleocr\ppocr\utils\dict\table_structure_dict.txt;.\ppocr\utils\dict --add-data %PADDLEOCR_PATH%\layoutparser\misc\NotoSerifCJKjp-Regular.otf;.\layoutparser\misc --additional-hooks-dir=. --hidden-import extract_textpoint_slow --hidden-import tablepyxl --hidden-import tablepyxl.style
    1. 正式打包
    SET PADDLEOCR_PATH=C:\Users\leo\anaconda3\envs\paddleocr\Lib\site-packagesSET CODE_PATH=C:\workspaces\tools\scr2txtpyinstaller --clean -y -w -F --clean --exclude matplotlib -p %PADDLEOCR_PATH%\paddle\libs;%PADDLEOCR_PATH%\paddleocr;%PADDLEOCR_PATH%\paddleocr\ppocr\utils\e2e_utils;%PADDLEOCR_PATH%\paddleocr\ppstructure\table scr2txt.py -i scr2txt.ico --add-binary %PADDLEOCR_PATH%\paddle\libs;. --add-data %CODE_PATH%\scr2txt.ico;. --add-data %PADDLEOCR_PATH%\paddleocr\ppocr\utils\ppocr_keys_v1.txt;.\ppocr\utils --add-data %PADDLEOCR_PATH%\paddleocr\ppocr\utils\dict\table_structure_dict.txt;.\ppocr\utils\dict --add-data %PADDLEOCR_PATH%\layoutparser\misc\NotoSerifCJKjp-Regular.otf;.\layoutparser\misc --additional-hooks-dir=. --hidden-import extract_textpoint_slow --hidden-import tablepyxl --hidden-import tablepyxl.style --version-file=version.txt

其他注意事项


pyinstall 打包问题总结

  • 1 找不到资源问题和matplotlib报错

matplotlib报错,通过 --exclude 屏蔽matplotlib(我的项目不用)资源找不到,通过打包 --add-binary --add-data 解决

pyinstaller -D -w --clean --exclude matplotlib -p C:\Anaconda2\envs\paddleocr\Lib\site-packages\paddleocr;C:\Anaconda2\envs\paddleocr\Lib\site-packages\paddle\libs textshot.py -i textshot.ico --add-binary C:\Anaconda2\envs\paddleocr\Lib\site-packages\paddle\libs;. --add-data C:\opencode\ocr\textshot_paddle\model;.\model --additional-hooks-dir=.
  • 2 进程无线启动问题

  • 2.1 分析

经过多次排除法尝试,只要存在以下语句"from paddleocr import PaddleOCR"就会导致进程不停启动通过命令行运行打包进程“txt.exe", 手动强杀进程(Ctrl+C)发现以下报错:

c:\opencode\ocr\textshot_paddle>C:\opencode\ocr\textshot_paddle\dist\txt\txt.exeTraceback (most recent call last):  File "txt.py", line 200, in <module>    out, err = import_cv2_proc.communicate()  File "subprocess.py", line 964, in communicate  File "subprocess.py", line 1296, in _communicate  File "threading.py", line 1044, in join  File "threading.py", line 1060, in _wait_for_tstate_lockKeyboardInterrupt[448] Failed to execute script txt

于是查看 paddle\dataset\image.py 代码,发现200行如下

if six.PY3:    import subprocess    import sys    import_cv2_proc = subprocess.Popen(        [sys.executable, "-c", "import cv2"],        stdout=subprocess.PIPE,        stderr=subprocess.PIPE)    out, err = import_cv2_proc.communicate()    retcode = import_cv2_proc.poll()    if retcode != 0:        cv2 = None    else:        import cv2else:    try:        import cv2    except ImportError:        cv2 = None

然后根据pyinstaller issue帖子40674110分析,怀疑subprocess.Popen导致问题于是写测试程序,打包测试

import ioimport osimport sysimport subprocessimport sysimport_cv2_proc = subprocess.Popen([sys.executable, "-c", "import cv2"],stdout=subprocess.PIPE,stderr=subprocess.PIPE)out, err = import_cv2_proc.communicate()retcode = import_cv2_proc.poll()if retcode != 0:    cv2 = Noneelse:    import cv2    #from paddleocr import PaddleOCRif __name__ == "__main__":    print ("is ok!!!!!!!!!!!!!!!!!")    args = input('input where you think:')    print (args)

果然,重现问题,无线启动新进程。

  • 2.3 解决方案

解决方案简单粗暴,修改image.py 39行开始代码,屏蔽subprocess调用

# if six.PY3:#     import subprocess#     import sys#     import_cv2_proc = subprocess.Popen(#         [sys.executable, "-c", "import cv2"],#         stdout=subprocess.PIPE,#         stderr=subprocess.PIPE)#     out, err = import_cv2_proc.communicate()#     retcode = import_cv2_proc.poll()#     if retcode != 0:#         cv2 = None#     else:#         import cv2# else:#     try:#         import cv2#     except ImportError:#         cv2 = Nonetry:    import cv2except ImportError:    cv2 = None

问题解决。

如果本软件对你有用,请多多支持,这将使我有更有动力不断完善,谢谢!


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap