一个工具,用于将PDF文本以及结构特征转换为熊猫数据帧。

PDFContentConverter的Python项目详细描述


PDF内容转换器是一个工具,用于将PDF文本和结构特征转换为pandas数据帧,用Python编写。 它检索有关文本内容、字体、位置、字符频率和周围的可视PDF元素的信息。在

如何

  • 传递要转换为PDFContentConverter的PDF文件的路径。在
  • 调用函数pdf2pandas()。然后,PDF内容作为pandas数据帧返回。在
  • PDF的媒体框可以使用get_media_boxes(),页面计数超过get_page_count(),文档文本使用pdf2text()。在
  • 使用convert()函数,pandas数据帧、文本文档内容、媒体框和页数将作为字典返回。在

示例调用:

converter = PDFContentConverter(pdf)

result = converter.pdf2pandas()

输出格式

包含转换后的PDF数据的输出存储为pandas dataframe。在

不同的PDF元素以行的形式存储。在

数据帧包含以下列:

  • id:PDF元素的唯一标识符
  • page:页码,从0开始
  • text:PDF元素的文本
  • x_0:左x坐标
  • x_1:右x坐标
  • y_0:上y坐标
  • y_1:底部y坐标
  • pos_x:中心x坐标
  • pos_y:中心y坐标
  • abs_pos:包含(pos_x,pos_y)坐标的独立于页面的表示的元组
  • original_font:pdfminer提取的字体
  • font_name:从original_font中提取的字体的名称
  • code:pdfminer提供的字体代码
  • bold:因子1表示文本为粗体,否则为0
  • italic:因子1表示文本为斜体,否则为0
  • font_size:以磅为单位的文本大小
  • masked:数字内容替换为#的文本
  • frequency_hist:文本中字符类型频率的直方图,存储为包含文本、数字、文本符号和其他符号百分比的元组
  • len_text:字符数
  • n_tokens:字数
  • tag:用于键-值对提取的标记,根据简单的启发式方法指示键或值
  • box:由pdfminer布局分析提取的框
  • in_element_ids:包含周围可视元素(如矩形或列表)的ID。它们以列表形式存储[左、右、上、下]。-1表示没有相邻的可视元素。在
  • in_element:根据in*element_id指示元素是否存储在可视矩形表示(存储为“矩形”)中(存储为“none”)。在

此外,还将返回一个包含以下条目的字典

可用于转换绝对CSV坐标:

  • x0:左x页裁剪框坐标
  • x1:右x页裁剪框坐标
  • y0:上y页裁剪框坐标
  • y1:下y页裁剪框坐标
  • x0page:左x页面坐标
  • x1page:右x页面坐标
  • y0page:上y页坐标
  • y1page:下y页坐标

当使用convert()时,两者都返回到字典中。在

数据帧存储为“内容”,页面特征存储为“媒体盒”,文本内容存储为“文本”,页数存储为“页数”。在

致谢

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将HashMap<String,Object>从一个活动传递到另一个活动   java如何手动加密socket连接的流量?   java正则表达式生成一个不正确的结果   Java方法引用具有泛型参数的方法   java app setBackground()错误:不兼容的类型:int无法转换为Drawable   java是启动Spring引导而不是SpringApplication的其他方法。跑   无法打开java类路径资源[org/quartz/impl/jdbcjobstore/tables_h2.sql],因为它不存在   spring使用Java,如何确定来自tomcat Web服务器的出站服务调用?   java获取多个同名的XML元素JAXB   java使用Ant从同一代码库构建Swing和Android应用程序   JComponent的java重绘方法不起作用   java目标不可访问,标识符“beanName”解析为null   smtp是否有支持esmtp管道的java api?   java如何在Spring中自动连接业务对象   java在Hibernate中没有其他保存实体的方法吗?   针对两个客户机的SpringJavaWeb应用程序项目开发   使用split的java标记化输入