概述

身为一个苦逼的IT男,每天必不可少的就是要上网查资料,在网上总是经常能看到python、自动化办公、白领的福音之类的字眼,虽然自己主要做嵌入式方面的底层开发,每天也就是码码代码,也没多少办公文件需要我来处理,不过还是怀着好奇的心打算一探究竟。

背景

某一天,就跟正常的每一天一样的某一天,xxx给我发消息,说他们部门马上进入繁忙期,每个人都不能幸免,要开始拼命加班了,不明所以的我还以为他们接了什么大项目,后来一问才知道原来是他们公司把近几年所有同事的工资信息扫描录入一个pdf文件里面,而他们需要找到每个人的工资条并标注,然后单独提取出来放在一个新的pdf文件里面,由于员工的数量庞大,而且信息较多,所以需要动用大量的人力来完成。

听完之后,我这聪明好动的小脑袋马上就开始想了,不是python自动化办公这么牛吗,是不是这种时候就能体现出来了,既然如此,我是不是可以设计一个软件,自动化完成这一系列的工作呢?

思考

需求:设计软件之前第一步必须是分析需求,这一步重中之重,很多人不注重这一点,拿到项目马上就一股脑盲目的写代码,觉得自己灵感迸发,文思泉涌,如有神助,等到设计出来展示给用户,才发现原来这根本就不是用户想要的,悲哀的自己原来从一开始就走偏了,或者说是跑偏了。

既然需求这么重要,那么我们第一件事就是弄懂xxx的需求,经过反复向xxx求证,明确需求如下图所示:

总体来说,xxx需要做的有三件事。

1. 在原文档(包含所有员工工资信息,如上图的3月张三工资信息.pdf文件)中找到指定员工(张三)所在位置,并用特殊颜色(黄色)标记出来。

2. 将将文档中指定员工所在页(如上图中的第3页)外其它页全部删除。

3. 使用上面的规则完成所有员工的处理。

xxx也向我展示了一下她的文件目录,如下图所示:

文件结构还是比较简单,

1. 首先有一个根目录(工资信息),存放所有员工工资信息,不同员工之间以目录的方式分开存放,如张三、李四等。

2. 每个员工目录下,将每年的工资信息通过子目录分开存放。

3. 每年的目录下存放着员工当年的工资信息文档,文档以月份为单位,格式为pdf。

设计

整个项目软件设计围绕用户需求展开,大致完成三个功能;

1. 在文档中,找到指定用户,并标记。

2. 删除文档中指定用户所在页外的其它页。

3. 遍历处理所有员工。

技术点:

1. 解析pdf文档内容。

难点:pdf文档存储内容为扫描文件,解析相对比较麻烦。

思路:先将文档所有页转换为jpg格式,然后调用OCR软件解析图片,找到相关的信息。

实施:应用开源软件tesseract。

结果:由于扫描原因,很多内容清晰度并不高,解析效果显得并不理想,不过因为时间有限,也暂时没有时间研究其它的OCR软件,所以此功能暂时放弃。

2. 处理pdf文档。

调用PyPDF2实现对pdf文档的操作,不过该调用库处理pdf文档需要以页为单位,对于本项目也已经足够了。

3. 多文件处理。

调用os库,遍历指定文件夹下所有.pdf文件(注意:对于子目录,需要递归遍历),存储为列表,然后再进行循环处理即可。

4. ui界面

原计划打算调用pyqt5设计用户界面,不过发现项目功能太过单一,所以改用tkinter库搭建。

功能修改:

考虑到pdf文档解析的复杂性,以及项目时间的紧张的原因,最终将项目功能1交给用户实现,软件仅仅完成功能2和3,也正是因为项目只完成了提取页码的工作,所以被命名为《自动提取pdf指定页》。

项目实施:

1. 用户通过肉眼查找文档中指定员工位置,找到后标注,并修改文件名,在文件名前两位加上页码数字(用于后期软件判断),如下图所示。

2. 通过软件提取页码,删除文档其它页。

3. 遍历处理所有员工信息,查找部分交于用户,删除部分交由软件。

往期 · 推荐

也没想象中那么神秘的数据结构-一种通用化的双向链表设计(底层源码)

也没想象中那么神秘的数据结构-一环扣一环的“链表”(双向链表)

我用C语言玩对象,框架化的模板模式

我用C语言玩对象,偷偷关注着你的观察者模式(基类设计)

我用C语言玩对象,独一无二的单例模式

关注

更多精彩内容,请关注微信公众号:不只会拍照的程序猿,本人致力分享linux、设计模式、C语言、嵌入式、编程相关知识,也会抽空分享些摄影相关内容,同样也分享大量摄影、编程相关视频和源码,另外你若想要本文章源码请关注公众号:不只会拍照的程序猿,后台回复:PDF拆解源码,也可点击此处下载

帮你自动化办公的python - 自动提取pdf指定页(项目概述)相关推荐

  1. nsga2代码解读python_python自动化办公系列 | python操作pdf—— PyPDF2 和 pdfplumber模块(1)...

    看了好多代码,目前为止都是散乱的分享,接下来将整理作为专题,进行系统化的一个分享整理,也是我自己学习的过程.第一个的系统化的分享专题--python办公自动化.代码后面的#所表示的是注释,对本行代码进 ...

  2. 【自动化办公】python处理PDF文件操作指南

    写在前面 想问问:你们有么有遇到!AttributeError: 'Document' object has no attribute '_getXrefLength' 最近处理一下PDF文件,根据一 ...

  3. io python 读取pdf_python自动化办公之 Python 解析 PDF

    上次给大家介绍了 Python 如何操作 Word 和 Excel ,而今天想为大家再介绍下,用 Python 如何解析 PDF ,PDF 格式不像前面两个那么规范,从它的表现来看,它更像是一张图片, ...

  4. python interpreter 中没有torch_python自动化办公之 Python 解析 PDF

    上次给大家介绍了 Python 如何操作 Word 和 Excel ,而今天想为大家再介绍下,用 Python 如何解析 PDF ,PDF 格式不像前面两个那么规范,从它的表现来看,它更像是一张图片, ...

  5. python 拆分pdf指定页,Python按页拆分pdf

    重构 我对代码进行了如下重构:import os import PyPDF2 def split_pdf_pages(input_pdf_path, target_dir, fname_fmt=u&q ...

  6. lisp对excel其他行列写入_【极简Python 自动化办公】Python写入Excel表格

    [极简Python 自动化办公]Python写入Excel表格 [极简Python 自动化办公]专栏是介绍如何利用python办公,减少工作负荷.篇幅精炼,内容易懂,无论是否有编程基础,都非常适合. ...

  7. 【python自动化办公】Python自动化之pdf——PyPDF2、pdfplumber、fitz、pdf2image库介绍

    目录 前言 1. 学习python自动化办公目的 2. 未来持续打卡内容 3. 资料来源与思维导图 一.PDF处理库 1.PyPDF2--基础操作 2.pdfplumber--表格抽取 3.fitz- ...

  8. python自动化办公兼职-python自动化办公?学这些就够用了

    知乎上有人提问:用python进行办公自动化都需要学习什么知识呢? 这可能是很多非IT职场人士面临的困惑,想把python用到工作中,却不知如何下手? python在自动化办公领域越来越受欢迎,批量处 ...

  9. 【效率倍增】5 个有助于自动化办公的 Python 工具库

    想想你在工作中所做的所有重复性任务.发送电子邮件.创建 Excel 报告.从 PDF 中提取数据.手动进行大量的数据分析工作. 我相信没有人愿意天天重复这样做,但最终,必须有人这样做.有没有更好的解决 ...

  10. 【python自动化办公】Python自动化之Excel——XLWings模块(入门)

    目录 前言 1. 学习python自动化办公目的 2. 未来持续打卡内容 3. 资料来源 一.xlwings介绍 1. 是什么?有什么优点? 2. 数据结构 3. 操作内容 一个实例: 创建一个exc ...

最新文章

  1. 《题目与解读》红书 训练笔记目录《ACM国际大学生程序设计竞赛题目与解读》
  2. MySQL性能测试工具sysbench的安装和使用
  3. C_数据结构_链式二叉树
  4. 皮一皮:终于知道乔峰为什么每次要吃那么多了!
  5. 使用yum时,保留下载包设置
  6. php protected 的继承,14 PHP 类的继承 [public protected private] parent 构造方法 析构方法 重写 最终类和方法 设计模式...
  7. docker使用镜像报错:standard_init_linux.go:211: exec user process caused “exec format error“
  8. [Vue.js] 路由 -- 基于vue-router的案例--后台管理
  9. 计算机与兵器的相关,不知道计算机专业怎么样?是学校的精品学科吗?
  10. COMPUTEX展 CPX论坛聚焦AI与物联网
  11. View的加载原理和拦截方式
  12. 史上最全使用Nexus搭建Maven服务器详细配置
  13. 萤火虫(FA)算法(附完整Matlab代码,可直接复制)
  14. 基于J2EE规范的中间件——EJB开发实例2
  15. STM32小车篇之超声波测距
  16. springboot整合author2
  17. 计算机考研复试之KY122 找出直系亲属(c++)
  18. win10资源管理器窗口无法缩小
  19. 怎么选型企业客户管理软件?看看别人是怎么做的
  20. 开源了个人开发的一个微信小程序,提供共享场景服务,支持图片和小视频

热门文章

  1. october php,关于Laravel之October的安装配置过程
  2. 光伏发电沦为白菜价 看光伏大佬们如何“割肉”
  3. 非洲正在打造一个与硅谷完全不同的人工智能产业
  4. (Linux)mongodb启用安全认证登录
  5. 获取指定文件夹下所有的同种类型文档的名字(Python)
  6. XP系统无法访问\\192.168.1.104无法访问。你可能没有权限使用网络资源。与这台服务器的管理员联系以查明你是否有访问权限
  7. 多项式拟合缺点_常见算法优缺点
  8. python支持向量机 股票_测 python 利用SVM预测股票涨跌
  9. 计算机涨跌公式,计算机今日涨跌公式,怎么算 股票的涨跌停板 公式是怎么的?...
  10. GRYZ 模 拟 赛 系 列 Xxy 的车厢调度