一文解决PaddleOCR使用TextRender合成图片

首先跑通demo

源码地址:https://github.com/Sanster/text_renderer

  1. 语句很简单就执行下面两句
conda create -n textrender python=3.7
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
python main.py

但是就这两句话折磨了一上午,具体原因猜测是requirements.txt给的很多需要的库都会下载最新版本,但是这个程序是比较久远的代码了。
2024.7.8 因为看了很多博客尝试了很多发现就是python版本的问题,标注时间方便大家如果在很久后看到这篇文章不要拘泥于python3.7版本,反正是版本问题就可以多试几个(如果3.7报错)

  • 具体问题1:py=3.6 直接pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt就出问题了所以肯定是不能用
  • 具体问题2:py=3.5 运行代码报错,并且无法解决( File "D:\OCR\code\text_renderer-master\textrenderer\liner.py", line 28 self.linestate: LineState = LineState()
  • 具体问题3:py=3.8,环境安装好后,运行代码直接不报错,但是程序一直卡在Total fonts num: 1Background num: 1Loading corpus from: ./data/corpusLoading chn corpus: 1/1Generate text images in ./output/default就一直不动了,花费大量时间排查发现根本无法解决
  • 最后使用py=3.7就可以直接运行了,太坑了!!!!!网上基本没有人遇到这个问题或者解决这个问题,希望遇到同样问题可以参考。

跑自己的数据

  1. 设置RGB字体
    • configs->default.yaml-> font_color: enable: rgb 默认是false即灰度图
  2. 执行自己数据的路径
    • python main.py --num_img=3000 --fonts_list=my_data/fonts.list --corpus_dir "my_data/cropus" --corpus_mode "list" --bg_dir "my_data/bg/" --img_width 0
    • 各类参数详情参考parse_args.py进行设置
--num_img NUM_IMG 要产生的图片的数量
--length LENGTH 每个图中的字数(中文)或者词语数量(英文),对于英文语料,默认长度是3
--clip_max_chars 训练一个CRNN模型时,一个图中最大字符数量应该小于最后一层CNN层的宽度
--img_height IMG_HEIGHT
--img_width IMG_WIDTH  如果是0,则输出图像会有不同的宽度
--chars_file CHARS_FILE 允许在图像中出现的字符集
--config_file CONFIG_FILE 设置渲染图像时的参数
--fonts_list FONTS_LIST 要是用的字体文件的路径
--bg_dir BG_DIR 背景图文件夹,对应于yaml配置文件
--corpus_dir CORPUS_DIR 当语料库模式为chn或eng时,图像上的文本将从语料库中随机选取。递归地查找语料库目录中的所有txt文件
--corpus_mode {random,chn,eng,list} 不同的语料库类型有不同的Load/get_sample方法,random:随机从字符文件里选择字符,chn:从语料库里选择连续的字符,eng:从语料库中选择连续的词语,自带空格。
--output_dir OUTPUT_DIR 保存图像的目录
--tag TAG 输出图像被曝存在 output_dir/{tag}目录下
--debug  输出未被裁减的图像(cropped 裁剪的) 变换时中间过程的产物
--viz 
--strict 检查生成图像时字体对字符的支持
--gpu 使用CUDA产生图像
--num_processes NUM_PROCESSED 产生图像时使用的进程数量。None的话,使用所有的CPU核数。
  1. padding的问题
    • 默认会将背景进行padding大小如下
    • padding = random.randint(s_bbox_width // 10, s_bbox_width // 8)
    • 不想设置padding就设置padding = 0,即文字两端不会有空白。
    • 修改位置在textrenderer\renderer.py
  2. 文件格式和内容简介如下:
    • my_data
      • bg (文字背景)
      • cropus(需要生成的文字信息)
      • fonts (字体)
      • eng.txt (复制程序自带的)
      • fonts.list (自己字体的位置)
    • 具体参考自带的data文件夹就可以啦~~
总结

如果顺利的话你应该不会有任何报错,如果有报错或者卡死情况建议切换python版本解决起来更快,贴出自己的可运行代码的库截图
在这里插入图片描述

本文参考

paddleocr
解决py版本问题启发这篇文章还说了一个新的版本的生成方式github如下,后续有空了解一下
https://github.com/oh-my-ocr/text_renderer

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值