芯片工程师使用软实力服务生活事务(一)

在2021年,笔者曾经发布过数篇关于芯片工程师软实力的文章,具体链接见Python的进击(上)-- IC工程师的软实力,如今已经过去了一年有半了,芯片工程师的软实力之路依然坚持,最近通过解决生活中的一个小诉求,再次用这个不务正业的软实力解决了孩童教育的一个小问题,这个案件比较有趣,这里也不敢独享,通过这篇短文分享给各位有孩童教育需求的朋友们。闲言少叙,ICer Go!
孩子都有学习生字的教育需求,为了提升孩子的生字学习能力,孩子母亲给孩子购买了《洪恩识字》这个APP。这里确实要对这个APP点点赞,有趣的设计,寓教于乐,也有董浩叔叔和金龟子的加盟,APP整体风格非常好,孩子也很喜欢。生字学的非常快,每天都会主动要求学一会,让家长生了不少心。
在这里插入图片描述

一个小问题

对于家长而言,孩子在寓教于乐的小游戏中学习生字,总是有一种苦恼,如果环境改变,生字顺序调整,那么小朋友的的生字能力还可以吗?如果换成纸质文档,小朋友会不会有阅读障碍呢?对于,这些问题,洪恩识字也很贴心,推出了生字复习PDF功能,类似下面这种格式:
在这里插入图片描述
这种字卡的功能是识字加练字,缺点是每页的生字量很少,如果打印200个生字,基本需要40页,如果只是用于字卡功能,那么也是造成无效的碳排放。

方案成果

对于测试小朋友的生字检查,家长更需要的是类似字卡的功能,为了实现这一个小目标,python的各种操作跃然纸上。基于洪恩的PDF,python最后生成的字卡是这样的(可打印的PDF A4版式格式)
在这里插入图片描述
自制字卡特点如下

  • 一页54个汉字,将文件(打印)量压缩到原本的10%左右
  • 保持原有字体大小和格式,保持专注度,
  • 乱序排布,减少上下文依赖
    小朋友看到第一张打印版的时候,确实非常高兴,每天都会对于各种排序的字卡进行训练,也算是对开发人员的一种认可吧。

设计思路

源数据分析

洪恩的字卡是PDF图片格式,不会允许简单的赋值黏贴的,如果直接转存text,结果类似是这样的
在这里插入图片描述
可以看到,PDF每页只有图片,没有任何其他任何有用的信息。所以多以这种防复制的PDF,最好的方法就是以“图”攻“图”。

PDF截图

洪恩的PDF很有规律,每一页都是5个字,可以推测,原始PDF也是用程序进行开发/导出的,一致性非常高。

在这里插入图片描述

每个字都是在一列上,当然需要有一个起始偏移。和一个轮询控制(每页5此轮询)

在这里插入图片描述
看起来挺简单的。好,开始造轮子,错,开始看看有没有现成的轮子可以用。

python包

为了实现这个目标,这里有几个地方(包)需要澄清(下载)。

  • PDF文件读取和截图:fitz
  • 拼图:PIL
  • 添加页码:cv2

程序流程

基本属于简单的顺序执行,使用python的主要原因还是强大的社区支持和多元的包环境,开发者也使用了VS Code和github代码托管(文尾会附上git路径,供有兴趣/需要的朋友自由下载)

  1. 读入PDF,并分页
  2. 对每页的进行五次区域截图,并把每一个截图保存到一个目录里,类似这样:
    在这里插入图片描述
  3. 将这个目录里的图片进行图片合并。这里需要考虑目标图片的高宽和图片拼接的行和列。采用乱序拼接的结果类似如下
    在这里插入图片描述
  4. 添加页码:由于每页只有54个汉字,所以一定是多页,为了方便学习使用,这里在页尾需要页码/总页码的标记。完成后类似下面:
    在这里插入图片描述
  5. 可打印文件格式规划。上述的单张图片格式不是很方便交付和打印,需要进行PDF合并,然后提交打印任务,由于字体很大,而且字卡对颜色不要求,建议使用黑白双面打印方法,从点滴做起,减少碳排放
    在这里插入图片描述
    基本到此,整个小任务完成。python是非常强大,易用,高效,多接口的脚本语言,从解决工作上的一些诉求发展到解决了生活中的一些小问题,也算是忙碌的工程师可以给家里做的一点点贡献吧。无论怎样,小朋友的笑容是对整个开发过程和开发者的最大的认可。
    对了,这里附上git链接,欢迎大家使用指正: [email protected]:icer2020/pdf_capture.git

猜你喜欢

转载自blog.csdn.net/i_chip_backend/article/details/129975878