Coding,the witchery of the real world

0%

文档结构化Tips

0.前言

这会是一个思路与工具以及实操注意点的混合版本,基于下图进行扩充,若无特殊说明,所用编程语言皆为Python3.6

文档结构化

1. 数据获取

1.1. 爬虫

1.1.1. 工具

  • Beautiful Soup
    • 将获取的网页内容转换成树结构解析
  • Selenium
    • 模仿浏览器行为获取内容

1.1.2.Tips

  • 以下未说明selenium或者Beautiful Soup的大体上思想是可以通用的

  • 需要规避审查机制的时候可以考虑selenium模拟浏览器行为去操作

    • 需要与chrome driver这一类浏览器驱动配合使用
    • 流程
      • 调用driver加载自定义配置打开浏览器
      • 模拟用户在地址栏输入
      • 模拟用户在页面点击访问
      • 模拟用户进行下载行为
    • 因此也常用于自动化测试
  • 注意几种定位元素的方式,配合正则表达式

    • xpath
      • 相对位置
      • 绝对位置
    • class
    • id
    • tag
  • 注意操作顺序,有强制性的前后顺序,可以参考wait机制,等待一个操作结束后进行另一个操作的部分

  • 需要先获取一个list的可以考虑

    • 一个元素,然后就去下
    • 分步获取一部分,一部分一部分的完成
    • 获取整个list,再等到限制条件达到的时候停止

1.2. 批处理

1.2.1. 工具

  • 文件操作相关的一些库
    • shutil
    • os
    • sys
    • etc.
  • 其他重复性工作用到的库也可以用来批处理简化

1.2.2. Tips

  • 数据获取部分的批处理主要是对数据的命名、格式做一个初步的规范
  • 获取路径
    • 注意路径上的空格,考虑转义或者用引号标注
    • 进而获取文件目录
    • 获取每一个需要处理文件的路径,生成处理完成目标的目录
  • 批处理实际上就是循环的处理脚本
  • 处理时可以通过命令行命令在程序中调用其他已有的程序来做一些事情

2. 信息初步分解

2.1. PDF抽取

2.1.0. Tips

  • 对于一些不太容易处理的标签错误或很多标签交杂
    • 选择性的去除一些标签
    • 整体转为文本用规则的方法去除标签
    • 分段时句尾符号,考虑去除空格之后做判断
    • 断行时连接符去除考虑“- ”或者“-\n”这种视具体情况去除
  • 编码格式
    • unicode/utf8/other
    • 注意python2.x系列似乎不支持unicode,3.6版本可以
  • 为了持久可复用,建议写好requirements和大版本信息等或venv部署要求

2.1.1. PDF2HTML

2.1.1.1. 工具
2.1.1.2. Tips
  • 生成的html的特征
    • 片段化文本组织成的页面
  • 处理注意点
    • 字体大小
    • 相对位置
    • Abstract,Introduction,Reference等关键词

2.1.2. PDF2XML

2.1.2.1. 工具
2.1.2.2. Tips
  • cermine用于提取元信息,这个处理的挺不错的
    • 布局比较离散化的容易识别出错
  • pdfx对于篇章结构生成的xml结构相对清晰
    • 去除unknown的块和figure、table的块也没有丢失很多信息,分段基本清晰
    • 左右栏标题高度相近的容易被误判成一个标题
    • 也有小标题无法识别,大标题基本都可以

2.1.3. PDF_Extract

2.1.3.1. 工具

2.2. 信息分类

2.2.1. 类别

image-20200120154543303

2.2.2. Tips

  • 结构规定好之后把类写好,依据这个填充内容

2.3. 进一步结构化

2.3.1. Tips

  • 观察结构的不同,和通用的部分
  • 根据不同的分段特点、句子特点等处理
  • 处理建议观察一小段
    • 之后发现有问题的,再去结合正确情况和错误情况
    • 日趋鲁棒

3. 生成markdown

3.1. Tips

  • 注意markdown的语法,增强可读性
  • 需要特殊标记用于其他用途的规避语法