精华内容
下载资源
问答
  • 该VBA脚本可以实现word文档的多个表中提取数据每个表格的信息提取到一行。 Sub word2els() Set wdApp = CreateObject(“kwps.application”) path_ = ThisWorkbook.Path wdApp.Documents.Open (path_ & “”...

    该VBA脚本可以实现从word文档的多个表中提取数据,每个表格的信息提取到一行。

    Sub word2els()
    Set wdApp = CreateObject(“kwps.application”)
    path_ = ThisWorkbook.Path
    wdApp.Documents.Open (path_ & “” & “bbb.doc”)
    wdApp.Visible = True
    ThisWorkbook.Sheets(“sheet1”).Cells(1, 1) = “序号” ‘’’ 设置sheet1的第一行第一列单元格内容为“序号”
    ThisWorkbook.Sheets(“sheet1”).Cells(1, 2) = “用例标识” ‘’’ 设置sheet1的第一行第一列单元格内容为“用例标识”
    ThisWorkbook.Sheets(“sheet1”).Cells(1, 3) = “测试类型” ‘’’ 设置sheet1的第一行第一列单元格内容为“测试类型”

    n = wdApp.ActiveDocument.Tables.Count ‘’’'有多少个表格
    excel_line_no = 2
    For i = 1 To n
    zhs = wdApp.ActiveDocument.Tables(i).cell(2, 2) ‘’'提取第i个表格的第二行第三列单元格的内容保存到变量zhs中
    Version = wdApp.ActiveDocument.Tables(i).cell(3, 5) ‘’'提取第i个表格的第三行第五列单元格的内容保存到变量Version中
    env = wdApp.ActiveDocument.Tables(i).cell(3, 7) ‘’'提取第i个表格的第三行第七列单元格的内容保存到变量env中
    ThisWorkbook.Sheets(“Sheet1”).Cells(excel_line_no, 1) = zhs ‘’'将变量zhs的值写入到excel的sheet1的第’excel_line_no 行第1列
    ThisWorkbook.Sheets(“Sheet1”).Cells(excel_line_no, 2) = Version ‘’'将变量Version的值写入到excel的sheet1的第’excel_line_no 行第2列
    ThisWorkbook.Sheets(“Sheet1”).Cells(excel_line_no, 3) = env ‘’'将变量env的值写入到excel的sheet1的第’excel_line_no 行第3列
    excel_line_no = excel_line_no + 1
    Next
    wdApp.Application.Quit '关闭word文档
    Set wdApp = Nothing '释放对象变量的内存

    End Sub

    word文档如下:
    在这里插入图片描述
    提取结果如下:
    在这里插入图片描述

    展开全文
  • Excalibur:一Web界面,用于PDF中提取表格数据 Excalibur是一Web界面,可以Python 3编写的PDF中提取表格数据! 它由驱动。 注意: Excalibur仅适用于基于文本的PDF,不适用于扫描的文档。 (如塔布拉,...
  • Camelot:pdf中提取表格数据

    万次阅读 2019-03-22 16:40:20
    Camelot:pdf中提取表格数据文章目录:一、Camelot的介绍和安装1. Camelot介绍2. Camelot的安装3. 其他二、Camelot的使用1. 快速入门使用2. 详细说明3. camelot两种表格解析(提取)方法1、流解析(stream)2、格子...


    工作要效率,大数据时代,获取信息也要效率,只用不断的造轮子,才能不断的提高效率,今天介绍一下一款可以直接从pdf格式的文档中提取表格中数据的工具,Camelot!!!


    一、Camelot的介绍和安装

    1. Camelot介绍

    Camelot: 一个友好的PDF表格数据抽取工具

    一个python命令行工具,使任何人都能很轻松的从PDF文件中抽取表格数据。

    使用Camelot从PDF文档提取数据非常简单

    • Camelot允许你通过调整设置项来精确控制数据的提取过程
    • 可以根据空白和精度指标来判断坏的表格,并丢弃,而不必手动检查
    • 每一个表格数据是一个panda的dataframe,从而可以很方便的集成到ETL和数据分析工作流中
    • 可以把数据导出为各种不同的格式比如CSV、JSON、EXCEL、HTML

    2. Camelot的安装

    camelot有三种安装方式:

    • pip 安装
    • conda安装
    • 源码安装
    1. pip 安装

    pip install camelot-py[cv]

    1. conda安装

    conda install -c conda-forge camelot-py

    1. 源码安装

    git clone https://www.github.com/socialcopsdev/camelot
    cd camelot
    pip install “.[cv]”

    注意:

    如果后面导入camelot库包的时候,出现错误,可能是缺少Ghostscript包,用pip 安装即可。

    3. 其他

    源码参考文档:
    https://github.com/socialcopsdev/camelot
    使用文档:
    https://camelot-py.readthedocs.io/en/master/

    二、Camelot的使用

    1. 快速入门使用

    从一个pdf文件中提取出表格:

    >>> import camelot
    >>> tables = camelot.read_pdf('foo.pdf')
    >>> tables
    <TableList n=1>
    >>> tables.export('foo.csv', f='csv', compress=True) # json, excel, html
    >>> tables[0]
    <Table shape=(7, 7)>
    >>> tables[0].parsing_report
    {
        'accuracy': 99.02,
        'whitespace': 12.24,
        'order': 1,
        'page': 1
    }
    >>> tables[0].to_csv('foo.csv') # 也可以提取成其他格式 to_json, to_excel, to_html
    >>> tables[0].df # 获取一个pandas DataFrame!
    

    2. 详细说明

    上面的例子的说明:
    1、创建一个表格对象

    >>> tables = camelot.read_pdf('foo.pdf')
    >>> tables
    <TableList n=1>   # 只检测到一个表格
    

    默认情况下,Camelot仅使用PDF的第一页来提取表。要指定多个页面,可以使用pages关键字参数:

    >>> camelot.read_pdf('your.pdf', pages='1,2,3')
    

    也可以使用命令行执行相同的操作

    camelot --pages 1,2,3 lattice your.pdf
    

    该pages关键字参数接受页面页码的逗号分隔的字符串。还可以指定页面范围 - 例如,pages=1,4-10,20-30或pages=1,4-10,20-end。

    注意:

    如果pdf文件是加密的表格,需要加入password参数,值为解密密码

    >>> tables = camelot.read_pdf('foo.pdf', password='userpass')
    >>>tables
    <TableList n=1>
    

    命令行:

    camelot --password userpass lattice foo.pdf
    

    目前,Camelot仅支持使用ASCII密码和算法代码1或2加密的PDF 。如果无法读取PDF,则抛出异常。这可能是由于未提供密码,密码不正确或加密算法不受支持。


    2、查看表的形状(行和列),通过表格索引查看
    我们可以使用其索引访问每个表。从上面的代码片段中,我们可以看到该tables对象只有一个表,因为n=1。让我们使用索引访问该表0并查看它shape。

    >>> tables[0]
    <Table shape=(7, 7)>
    

    3、打印解析报告。

    >>> print tables[0].parsing_report
    {
        'accuracy': 99.02,
        'whitespace': 12.24,
        'order': 1,
        'page': 1
    }
    

    从解析的参数的评价标准可以得出,其准确性是很好的,空白较少,这意味着表格最有可能被正确提取。可以使用table对象的df属性将表作为pandas DataFrame访问。


    4、打印出提取表格中的内容
    数据格式是pandas DataFrane,因此用df访问

    >>> tables[0].df
    

    在这里插入图片描述


    5、导出表格中的内容
    可以使用其to_csv()方法将表导出为CSV文件。或者可以使用to_json(),或方法表分别导出为JSON格式,Excel,HTML文件或SQLite数据库。方法如下:

    • to_csv()
    • to_json()
    • to_excel()
    • to_html()
    • to_sqlite()
    >>> tables[0].to_csv('foo.csv')
    

    上面的1~5 步骤都可以通过命令行直接完成。

    camelot --format csv --output foo.csv lattice foo.pdf
    

    使用的pdf例子的传送门:–>here

    3. camelot两种表格解析(提取)方法

    1、流解析(stream)

    Stream可用于解析在单元格之间具有空格的表,以模拟表结构。它建立在PDFMiner的功能之上,即使用边距将页面上的字符分组为单词和句子。

    1. PDF页面上的单词根据其y轴重叠分组为文本行。
    2. 计算文本,然后用于猜测PDF页面上有趣的表区域。您可以阅读Anssi Nurminen的硕士论文,以了解有关此表检测技术的更多信息。[见第20,35和40页]
    3. 然后猜测每个表区域内的列数。这是通过计算每个文本行中的单词数模式来完成的。基于此模式,选择每个文本行中的单词以计算列x范围的列表。
    4. 然后使用位于当前列x范围内/外的单词来扩展当前列列表。
    5. 最后,使用文本行的y范围和列x范围形成表格,并且页面上找到的单词基于其x和y坐标分配给表格的单元格。

    2、格子解析(lattice)

    格子本质上更具有确定性,并且它不依赖于猜测。它可用于解析在单元格之间划分了行的表,并且它可以自动解析页面上存在的多个表。

    它首先使用ghostscriptPDF页面转换为图像,然后通过使用OpenCV应用一组形态变换(侵蚀和膨胀)来处理它以获得水平和垂直线段

    下面介绍处理的步骤:
    1、检测分割线段
    在这里插入图片描述

    2、通过重叠检测到的线段并叠加"和"它们像素强度来检测线的交叉点
    在这里插入图片描述
    3、通过再次重叠检测到的线段来计算表边界,这次是“或”它们的像素强度。
    在这里插入图片描述
    4、由于PDF页面的尺寸及其图像不同,因此检测到的表格边界,线条交叉点和线段将缩放并转换为PDF页面的坐标空间,并创建表格的表示。
    在这里插入图片描述
    5、使用线段和线交叉检测生成单元。
    在这里插入图片描述
    6、最后,页面上找到的单词将根据其x和y坐标分配给表格的单元格

    三、高级使用

    1. 处理背景线

    1. 处理背景线

    2. 可视调试

    3. 指定表区域

    4. 指定列表分隔符

    5. 沿分隔符拆分文本

    6. 标记上标和下表

    7. 从文本中删除字符

    8. 改善猜测的表区域

    9. 改进猜测的表行

    10. 检测短线

    11. 在生成单元格中移动文本

    12. 复制跨越单元格中的文本

    13. 调整布局生成


    四、命令行的使用

    camelot --help 查看Camelot 参数使用:`
    参数说明:

    参数完成参数参数功能
    -q–quiet TEXT不输出日志和警告
    -p–pages TEXT页数范围,可以用都好分割符,或者页码范围,例如: 1,3,4 or 1,4-end
    -pw–password TEXT解密密码
    -o-output TEXT输出路径
    -f–format [csvjson
    -z–zip创建
    -split–split_text跨多个单元格拆分文本。
    -flag–flag_size根据字体大小标记文本。有用的检测超/下标。
    -strip–strip_text TEXT将字符串赋值给单元格之前,表格中的字符应该被删除
    -M–margins 字符边缘、线边缘、单词边缘

    在这里插入图片描述


    在这里插入图片描述
    ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠

    展开全文
  • 怎么提取pdf表格数据In this article, we talk about the challenges and principles of extracting tabular data from PDF docs. We also compare six software tools to find out how they perform their ...

    怎么提取pdf中的表格数据

    In this article, we talk about the challenges and principles of extracting tabular data from PDF docs. We also compare six software tools to find out how they perform their respective tasks of parsing PDF tables and getting data out of them.

    在本文中,我们讨论了从PDF文档中提取表格数据的挑战和原理。 我们还比较了六个软件工具,以了解它们如何执行各自的任务以解析PDF表并从中获取数据。

    为什么从PDF中提取表格数据是一个挑战 (Why It’s a Challenge to Extract Tabular Data from PDF)

    Today PDF is used as the basis of communication between companies, systems, and individuals. It is regarded as the standard for finalized versions of documents as it is not easily editable except in fillable PDF forms. Most popular use cases for PDF documents in the business environment are:

    今天,PDF用作公司,系统和个人之间进行交流的基础。 它被认为是文档定稿版本的标准,因为除了可填写的PDF表格外,它不容易编辑。 在业务环境中,PDF文档的最流行用例是:

    • Invoices

      发票
    • Purchase Orders

      订单
    • Shipping Notes

      运输注意事项
    • Reports

      报告书
    • Presentations

      简报
    • Price & Product Lists

      价格和产品清单
    • HR Forms

      人力资源表格

    The sheer volume of information exchanged in PDF files means that the ability to extract data from PDF files quickly and automatically is essential. Spending time extracting data from PDFs to input into third party systems can be very costly for a company.

    PDF文件中大量的信息交换意味着快速,自动地从PDF文件提取数据的能力至关重要。 花费时间从PDF提取数据以输入到第三方系统对于公司而言可能是非常昂贵的。

    The main problem is that PDF was never really designed as a data input format, but rather, it was designed as an output format ensuring that data will look the same at any device and be printed correctly. A PDF file defines instructions to place characters (and other components) at precise x,y coordinates. Words are simulated by placing some characters closer than others. Spaces are simulated by placing words relatively far apart. As for tables — you are right — they are simulated by placing words as they would appear in a spreadsheet.

    主要问题是PDF从来没有真正设计成数据输入格式,而是设计成输出格式,以确保数据在任何设备上看起来都一样并且可以正确打印。 PDF文件定义了将字符(和其他组件)放置在精确的x,y坐标处的指令。 通过将某些字符放置得比其他字符更近来模拟单词。 通过将单词相对分开放置来模拟空间。 至于表,您是对的,它们是通过像在电子表格中一样放置单词来模拟它们的。

    We see that the PDF format has no internal representation of a table structure, which makes it difficult to extract tables for analysis. Unfortunately, a lot of open data is stored in PDFs, which was not designed for tabular data in the first place.

    我们看到PDF格式没有表结构的内部表示,这使得提取表进行分析变得很困难。 不幸的是,许多开放数据存储在PDF中,而这些数据最初并不是为表格数据而设计的。

    Luckily, different tools for extracting data from PDF tables are available in the market. Being somewhat similar to each other, they have their own advantages and disadvantages. In this article, we compare the most popular software that can help get tabular data out of PDFs and present it in an easy-to-read, editable, and searchable format.

    幸运的是,市场上有多种用于从PDF表提取数据的工具。 它们彼此有点相似,但各有优缺点。 在本文中,我们将比较最流行的软件,该软件可以帮助从PDF中获取表格数据,并以易于阅读,可编辑和可搜索的格式显示它们。

    OCR:何时以及为什么使用它 (OCR: When and Why to Use It)

    Before choosing a tool, the first point is to understand what type of PDF files — text- or image-based — you will work with. It will impact on whether to use Optical Character Recognition (OCR) or not.

    在选择工具之前,首先要了解您将使用哪种类型的PDF文件(基于文本或图像)。 这将影响是否使用光学字符识别(OCR)。

    For example, we have a report generated as an output by a piece of software and imported in PDF format. Commonly, it is a text-based PDF.

    例如,我们有一个报告,它是由一个软件生成的输出,并以PDF格式导入。 通常,它是基于文本的PDF。

    If you work with image-based PDFs like scanned paper docs, or, for example, files captured by a digital camera — this is where OCR comes in. OCR enables machines to recognize written text or printed letters inside images. In other words, the technology helps to convert ‘text-as-an-image’ into an editable and searchable format.

    如果您使用基于图像的PDF(例如,扫描的纸张文档),或者使用数码相机捕获的文件,则可以使用OCR。OCR使机器可以识别图像中的文字或印刷字母。 换句话说,该技术有助于将“文本图像”转换为可编辑和可搜索的格式。

    Image for post
    Document scanned and converted into a text document using OCR
    使用OCR扫描文档并将其转换为文本文档

    o if your PDF is image-based, then the process of data extraction consists of two tasks: to recognize text and then recognize the table structure (i.e., how the text is placed in rows and columns). Some tools, like Amazon Textract, can complete both of them. But since text recognition is a separate task, it can be performed independently, with the help of pure OCR tools. There are dozens of them, but in this article, we will focus on the table structure recognition.

    o如果您的PDF是基于图像的,则数据提取过程包括两个任务:识别文本,然后识别表结构(即,文本在行和列中的放置方式)。 某些工具(例如Amazon Textract)可以完成这两个工具。 但由于文本识别是一项单独的任务,因此可以在纯OCR工具的帮助下独立执行。 它们有数十种,但是在本文中,我们将重点放在表结构识别上。

    从表中检测和提取数据的细节 (Nuances of Detecting and Extracting Data from Tables)

    Let’s assume that we have a text-based PDF document generated as an output by a piece of software. It contains tabular data, and we want to extract it and present in a digital format. There are two main ways to detect tables:

    假设我们有一个基于文本的PDF文档,它是由一个软件生成的输出。 它包含表格数据,我们希望将其提取并以数字格式显示。 检测表有两种主要方法:

    • Manually, when you detect column borders by eye and mark table columns by hands

      手动,当您用肉眼检测列边界并用手标记表格列时
    • Automatically, when you rely on program algorithms

      自动,当您依赖程序算法时

    Some tools offer either manual or automatic detection, while others combine both variants. From our experience, we can say that most of our clients’ cases require automatic recognition because they handle hundreds of documents with a slightly variable table structure. For example, columns’ width can differ not only between two documents but also on different pages inside one document. Therefore, if we mark each column in each table on each page by hand, it would take a lot of time and effort.

    一些工具提供手动或自动检测,而其他工具则结合了这两种变体。 根据我们的经验,我们可以说大多数客户的案例需要自动识别,因为他们处理的表结构略有变化的数百个文档。 例如,列的宽度不仅可以在两个文档之间不同,而且可以在一个文档内的不同页面上不同。 因此,如果我们在每个页面上手动标记每个表中的每一列,则将花费大量时间和精力。

    For our study, we created a sample one-page document covering all typical difficulties of data extraction caused by an ‘inconsistent’ table structure. Here is it:

    对于我们的研究,我们创建了一个样本的单页文档,其中涵盖了由“不一致”表结构引起的所有典型数据提取困难。 就这个:

    Image for post
    Sample document created for the study
    为研究创建的样本文件

    As you can see, in our sample document, we have multiple tables, and all of them have different widths of columns and inconsistent alignments. In such cases, manual detection can be tedious. For this reason, we are not going to use software that offers only manual table data detection. We choose an automatic way, and let’s see how good are algorithms for each of the tools.

    如您所见,在我们的示例文档中,我们有多个表,并且所有表都有不同的列宽和不一致的对齐方式。 在这种情况下,手动检测可能很乏味。 因此,我们将不使用仅提供手动表格数据检测的软件。 我们选择一种自动方式,让我们看看每种工具的算法效果如何。

    In addition to the table structure’s basic elements, we also deliberately included some ‘extra formatting’ that can potentially complicate the process of recognition:

    除了表结构的基本元素外,我们还故意包含一些“额外格式”,这些格式可能会使识别过程复杂化:

    • Multiple tables on a page — all of them should be detected

      页面上有多个表格-应该检测到所有这些表格
    • Non-tabular data: headers and page number

      非表格数据:标题和页码
    • The multiline text inside cells

      单元格内的多行文字
    • Table column & row spanning — merged cells

      表的列和行跨度—合并的单元格
    • Small table cell margins inside the table and between the table and the header

      表格内部以及表格和标题之间的小表格单元格边距

    PDF表提取库和工具的比较 (Comparison of PDF Table Extraction Libraries and Tools)

    From this study, you will learn about how six software tools perform their respective tasks of parsing PDF tables and how they stack up against each other. In the first part, we compare Tabula, PDFTron, and Amazon Textract.

    通过本研究,您将了解六个软件工具如何执行各自的解析PDF表的任务,以及它们如何相互堆叠。 在第一部分中,我们比较了Tabula,PDFTronAmazon Textract。

    Let’s see how libraries and tools mentioned above coped with this task of data recognition and extraction based on our sample document.

    让我们看看上面提到的库和工具如何根据我们的示例文档来完成数据识别和提取的任务。

    塔布拉 (Tabula)

    Tabula is a tool for liberating data tables locked inside PDF files. Tool overview:

    Tabula是用于释放锁定在PDF文件中的数据表的工具。 工具概述:

    • Type of software available: web application, requires simple local server setup

      可用软件类型: Web应用程序,需要简单的本地服务器设置

    • Platforms: Windows, MacOS, open source (GitHub, MIT Licence)

      平台: Windows,MacOS,开源(GitHub,MIT Licence)

    • Terms of use: free, open-source

      使用条款:免费,开源

    • Supported output formats: CSV, TSV, JSON

      支持的输出格式: CSV,TSV,JSON

    • Notes: Tabula only works on text-based PDFs, not scanned documents

      注意: Tabula仅适用于基于文本的PDF,不适用于扫描的文档

    After uploading our sample file and parsing data from it via Tabula, we got the following output:

    在上传示例文件并通过Tabula解析其中的数据之后,我们得到以下输出:

    Image for post
    Image for post
    Tabula: the result of detection of tables in the sample document
    表格:示例文档中表格的检测结果

    Zones marked in red are parts of the original file where Tabula detected tables. At this step, data recognition is captured correctly; all tables are detected, extraneous elements do not distort the result.

    红色标记的区域是Tabula检测到表的原始文件的一部分。 在此步骤中,数据识别已正确捕获。 所有表都被检测到,无关元素不会扭曲结果。

    But if we go further, we will see that the first row of the first and last rows of the last two tables is missing:

    但是,如果走得更远,我们将看到最后两个表的第一行和最后一行的第一行丢失了:

    Image for post
    Tabula’s Lattice method: preview of extracted tabular data
    Tabula的Lattice方法:预览提取的表格数据

    Tabula offers two options: two data extraction methods. The automatic detection method is Lattice. The result of its usage you can see above. If we try Stream, results become better; all data is extracted correctly without missing rows:

    Tabula提供了两种选择:两种数据提取方法。 自动检测方法是莱迪思。 您可以在上面看到其使用结果。 如果尝试Stream ,结果会更好; 正确提取所有数据而不会丢失行:

    Image for post
    Tabula’s Stream method: preview of extracted tabular data
    Tabula的Stream方法:预览提取的表格数据

    But using the Stream method, we face another problem: cells with multiline text are split into multiple table rows. It seems this variant is the best that we can get from Tabula.

    但是使用Stream方法,我们面临另一个问题:具有多行文本的单元格被拆分为多个表行。 看来这种变形是我们可以从Tabula获得的最好的变形。

    Summary: Tabula’s automatic detection method is not the best choice, so I don’t recommend relying on it. Both recognition methods provided by this tool have their own disadvantages. While data loss looks unacceptable in any case, split rows can be returned to their original state with additional processing — manually or with the script’s help.

    简介 :Tabula的自动检测方法不是最佳选择,因此我不建议依赖它。 此工具提供的两种识别方法都有其自身的缺点。 尽管在任何情况下数据丢失看起来都是不可接受的,但可以通过手动或在脚本的帮助下进行额外的处理,将拆分的行恢复为原始状态。

    PDFTron (PDFTron)

    PDFTron is software with multiple basic and advanced features that facilitate the manipulation of PDFs. Tool overview:

    PDFTron是具有多种基本和高级功能的软件,可简化对PDF的操作。 工具概述:

    • Type of software available: desktop app, web browser app, mobile app

      可用软件类型:桌面应用程序,Web浏览器应用程序,移动应用程序
    • Platforms: Android, iOS, Windows, Linux, MacOS

      平台:Android,iOS,Windows,Linux,MacOS
    • Terms of use: free trial period, pricing for licensing starts at $4000 annually

      使用条款:免费试用期,许可的起价为每年4000美元
    • Supported output formats: MS Word, SVG, HTML

      支持的输出格式:MS Word,SVG,HTML

    After uploading our sample file and parsing data from it via PDFTron, we got the following output:

    在上传示例文件并通过PDFTron解析了其中的数据之后,我们得到以下输出:

    Image for post
    PDFTron: the result of detection of tables in the sample document
    PDFTron:样本文档中表格的检测结果

    Red rectangles show the borders of detected tables. The number of tables and tabular data is recognized correctly, but headers of the third and fourth tables are captured as the table elements.

    红色矩形显示检测到的表格的边框。 可以正确识别表和表格数据的数量,但是将第三和第四表的标题捕获为表元素。

    If we convert the original PDF into HTML format using PDFTron, we’ll see that the headers named ‘CATEGORY 2’ and ‘CATEGORY 3’ are included as separate cells inside the table. Also, there are bugs with merged cells of the first table: the last two columns are merged as a larger one, and the second line of text is separated into a separate cell.

    如果使用PDFTron将原始PDF转换为HTML格式,则会看到名为“ CATEGORY 2”和“ CATEGORY 3”的标头作为单独的单元格包含在表中。 此外,第一个表的合并单元格也存在错误:最后两列合并为较大的单元格,第二行文本被分隔为单独的单元格。

    Image for post
    PDFTron: preview of extracted tabular data
    PDFTron:预览表格数据的预览

    Summary: In the output document we can see a piece of non-tabular data incorrectly included in the extraction result. It’s not a big problem since it can be purged after processing, manually, or with the script’s help. Also, I will not recommend this tool in cases when you have a lot of merged cells — they might be messed up.

    简介:在输出文档中,我们可以看到提取结果中错误地包含了一段非表格数据。 这不是一个大问题,因为可以在处理后,手动或在脚本的帮助下清除它。 另外,如果您有很多合并的单元格,则我不推荐使用此工具,因为它们可能会弄糟。

    亚马逊Textract (Amazon Textract)

    Amazon Textract is a service that automatically extracts text and data from scanned documents that go beyond simple optical character recognition (OCR) to identify, understand, and extract data from forms and tables. Tool overview:

    Amazon Textract是一项服务,可以自动从扫描的文档中提取文本和数据,而不仅仅是简单的光学字符识别(OCR)来识别,理解和提取表单和表格中的数据。 工具概述:

    • Type of software available: web application

      可用软件类型:Web应用程序
    • Platforms: any modern web browser, all processing goes ‘in the Cloud’

      平台:任何现代的Web浏览器,所有处理都在“云端”进行
    • Terms of use: several models (free, monthly subscriptions, cost-per-page model)

      使用条款:多种模式(免费,每月订阅,每页成本模式)
    • Supported output formats: raw JSON, JSON for each page in the document, text, key/values exported as CSV, tables exported as CSV.

      支持的输出格式:原始JSON,文档中每个页面的JSON,文本,以CSV格式导出的键/值,以CSV格式导出的表。

    After uploading our sample file and parsing data from it via Amazon Textract, we got the following result:

    在上传示例文件并通过Amazon Textract解析了其中的数据之后,我们得到了以下结果:

    Image for post
    Image for post
    Amazon Textract: the result of detection of tables in the sample document
    Amazon Textract:示例文档中表的检测结果

    Zones painted in gray are parts of the original file where Amazon Textract detected tables. As you can see, it didn’t recognize the first table on the page, detected two separate tables — the second and the third — as a single one, and also messed up the order of tables on the page.

    灰色区域是Amazon Textract检测到表的原始文件的一部分。 如您所见,它无法识别页面上的第一个表,将两个单独的表(第二个和第三个表)检测为单个表,并且还弄乱了页面上表的顺序。

    Regarding the data inside the cells, the extraction result is quite satisfying with some exceptions:

    关于单元内的数据,提取结果非常令人满意,但有一些例外:

    • Missing the data of the first table in the extraction result

      提取结果中缺少第一个表的数据
    • Header string ‘CATEGORY 3 is included as a part of table in the extraction result

      标头字符串“ CATEGORY 3”作为表的一部分包含在提取结果中
    Image for post
    Image for post
    Amazon Textract: preview of extracted tabular data
    Amazon Textract:预览表格数据的预览

    Summary: Amazon Textract looks to be the less suitable tool for data extraction applied to this particular case. A large amount of data loss, messed order of tables, and non-tabular data in the output document. The main advantage of Amazon Textract compared to all other tools is OCR, so that you can extract tabular data from images or image-based PDFs. In the case of text-based PDF, I would recommend choosing another tool.

    简介: Amazon Textract似乎不太适合应用于此特定案例的数据提取工具。 输出文档中大量数据丢失,表顺序混乱以及非表格数据。 与所有其他工具相比,Amazon Textract的主要优势是OCR,因此您可以从图像或基于图像的PDF中提取表格数据。 对于基于文本的PDF,我建议选择其他工具。

    Here is the first part of the article ‘How to Extract Tabular Data from PDF. In the second part, which is coming soon, we will analyze three more popular solutions for extracting and converting data from PDF and prepare a big сomparison table where each tool is rated according to the specific criteria. Follow UpsilonIT’s blog not to miss the great content!

    这是文章“如何从PDF提取表格数据”的第一部分。 即将推出 的第二部分中 ,我们将分析另外三种从PDF提取和转换数据的流行解决方案,并准备 一张巨大的比较表 ,其中每个工具均根据特定标准进行评级。 关注UpsilonIT的博客,不要错过精彩的内容!

    翻译自: https://medium.com/@upsilon_it/how-to-extract-tabular-data-from-pdf-part-1-16cc3a29fcfa

    怎么提取pdf中的表格数据

    展开全文
  • 但如果要操作的表格很大,那么可以使用程序自动执行遍历表格的操作,并提取数据。 看懂以下教程需要会: JavaScript简单语法; 浏览器DevTools(即F12快捷键呼出的界面); Code 选中表格元素 F12调出DevTools,...

    场景

    有时候上网查阅资料,需要网页中表格内、指定行列的数据。
    (本例操作的表格地址:mime类型)
    如果表格小(操作的 数据量小),可以手动复制粘贴。
    但如果要操作的表格很大,那么可以使用程序自动执行遍历表格的操作,并提取数据。

    看懂以下教程需要会:

    • JavaScript简单语法;
    • 浏览器DevTools(即F12快捷键呼出的界面);

    Code

    • 选中表格元素
      F12调出DevTools,切换到控制台Console
      Ctrl+Shift+C,鼠标点击网页中的表格。
      之后在控制台输入$0,可以打印出最近一次在页面中选中的元素。
      一定要选中表格。再执行以下操作。

    • 执行代码(遍历元素)

    var tbody = $0;             // 获取刚才鼠标点击选中的表格
    var trArr = tbody.children;       // 表格的所有子节点
    for (var i = 0; i < tbody.childElementCount; i++) {
        var tr = trArr[i];  // 第i+1行
        var tdArr = tr.children;    // 获取本行的单元格列表
        var a = tdArr[0].innerText;    // 第一列(扩展名)
        var b = tdArr[1].innerText;    // 第二列
        var c = tdArr[2].innerText;    // 第三列
        console.log("行数:%d  %s  %s  %s", i+1, a, b, c);
    }
    

    控制台执行结果如下:

    在这里插入图片描述当然以上代码只是数据提取测试。
    打印出结果后,可以从控制台复制结果数据(当然如果需要复制数据的话,需要调整一下输出格式。不要每行都输出一次,这样不好复制)。

    var result = "";
    var tbody = $0;             // 获取刚才鼠标点击选中的表格
    var trArr = tbody.children;       // 表格的所有子节点
    for (var i = 0; i < tbody.childElementCount; i++) {
        var tr = trArr[i];  // 第i+1行
        var tdArr = tr.children;    // 获取本行的单元格列表
        var a = tdArr[0].innerText;    // 第一列(扩展名)
        var b = tdArr[1].innerText;    // 第二列
        var c = tdArr[2].innerText;    // 第三列
        result += `${a}  ${b} ${c}\n`;
    }
    console.log(result);	// 一次性打印提取到的数据
    

    查看DOM元素对应的JavaScript的类型

    首先:DOM元素对象也属于JavaScript对象
    使用Object.prototype.toString.call(变量名)可以获取变量的类型。

    tbody    // 获取到的表格的DOM元素
    Object.prototype.toString.call(tbody);    // 表格DOM元素的JS类型
    
    
    tbody.children[0]    // 行的DOM元素
    Object.prototype.toString.call(tbody.children[0]);    // 行的DOM元素的JS类型
    
    
    tbody.children[0].children[0]    // 单元格
    Object.prototype.toString.call(tbody.children[0].children[0])    // 单元格的JS类型
    
    
    Object.prototype.toString.call(tbody.children)
    Object.prototype.toString.call(tbody.children[0].children)
    

    执行结果如下:

    在这里插入图片描述可以看到:

    DOM元素标签JavaScript对象类型
    tbodyHTMLTableSectionElement
    trHTMLTableRowElement
    tdHTMLTableCellElement
    多个tr或多个tdHTMLCollection
    展开全文
  • 提取工作表个数据的资源方法,以完成对数据的重新排列组合。
  • 一个利用PythonPDF表格提取数据的案列 1. 对PDF文件进行处理 我得到的PDF文件是这样的 我需要从中提取出每个煤矿公司的名称和所在的省份、城市、县区以及生产能力,并将数据导入Excel,总共4322条数据(PS...
  • python提取excel表格数据

    千次阅读 2020-08-26 15:26:21
    二、带着我发现的来问题,寻找解决方法:0、安装模块`xlrd`1、解决哪一行是开始的行的问题:2、解决,表格中有合并单元格的问题:3、结合1和2的问题解决,弄自动化识别开始数据的行并且提取数据。 一、说明: ...
  • 如下图所示,有一近2000行的数据表,需要把其中含有关键字‘颈廓清术,中央组(VI组)’的数据所在行都都给抽取出来,且提取后的表格不能改变原先的顺序。 问题分析: 一开始想用excel的筛选功能,但是发现只提供...
  • Dim objBook As Workbook Set objBook = Workbooks.Open(objFile.Path) ' 设置第二个工作表对象,此对象对应每个数据文件; Dim objSheet2 As Worksheet Set objSheet2 = objBook.Sheets(1) ' 得到工作簿的主文件名; ...
  • 在实际研究,我们经常需要获取大量数据,而这些数据很大一...那么如何才能高效提取出pdf文件表格数据呢? Python提供了许多可用于pdf表格识别的库,如camelot、tabula、pdfplumber等。综合来看,pdfplum...
  • 不过要通过工具来批量取值,Word文件的目标字符必须有规律才行,例如都处于表格中,或者都有下划线,只要目标符合指定的规则就可以批量提取到Excel表。 利用插件《Word精灵4.4》可以实现Word批量取值,并...
  • 通过Python自动化办公把提取word表格,填充到到excel当中. 首先通过for循环提取word当中的表格每个单元格的内容,然后指定excel,进行批量填充
  • 对于word数据,我们可能存在将其抽取为结构化数据的需求。抽取思想为对整个word文档上至下扫描,并对其中的文字和表格进行区分处理,可以记录文字和表格的顺序,并自由选择是否抽取出表格中的文字。
  • 用pythonpdf中提取表格

    千次阅读 2020-11-19 16:20:33
    最重要的是在这网址:https://www.ghostscript.com/download/gsdnld.html。下载Ghostscrip.exe。 import camelot.io as camelot import cv2 import pandas as pd import ghostscript as gs tabels = camelot....
  • 案例思想是源于前两天帮读者做了一 demo ,需求大致将一上百 word 中表格内容提取出来(所有word 中表格样式一样),把提取到的内容自动存入 Excel word 中表格形式如下 目前含有数上面形式的 word 文档需要...
  • (由Python大本营付费下载自视觉中国)作者 | vinayak mehta参与|一鸣来源 |Python数据科学(ID:PyDataScience) PDF...
  • Excel 如何按指定列提取数据并追加到新表的列 存在多个Excel文件,把每个Excel文件的B列,提取出来,放到新表的列,第一个文件或Sheet的B列放第一列,第二个文件或Sheet的B列放第二列..... 这个有一个方便性...
  • Java面试题大全(2020版)

    万次阅读 多人点赞 2019-11-26 11:59:06
    需要注意Jdk 1.8对HashMap的实现做了优化,当链表的节点数据超过八之后,该链表会转为红黑树来提高查询效率,原来的O(n)到O(logn) 24. 说一下 HashSet 的实现原理? HashSet底层由HashMap实现 HashSet的值存放...
  • 提取指定的PDF表格保存到Excel

    万次阅读 多人点赞 2018-09-26 22:14:45
    提取PDF表格 ...PDF存在大量表格,需要从表格中提取出指定类型的表格,这些表格主要通过表头和表的关键字来确定。 1.PDF示例 样例PDF下载地址: 2.提取规则 提取规则通过Excel指定,如下示例: 3....
  • python提取pdf文件表格

    千次阅读 2019-10-24 18:37:51
    extract_tables():将表格输出为json格式,默认为一个表格整体 import pdfplumber with pdfplumber.open('xxxx.pdf') as pdf: page=pdf.pages[16] #提取pdf第17页的表格 for row in page.extract_tables()...
  • Java读取Excel表格中数据

    千次阅读 2020-12-28 18:34:06
    文章目录前言一、添加jar包文件1....本文主要讲述如何在Java读取Excel表数据并在控制台输出,实现工具为Eclipse 提示:以下是本篇文章正文内容,下面案例可供参考 一、添加jar包文件 描述:在Java导入导出E
  • python—beautifulSoup提取网页数据写入指定的Excel表格 文章目录python—beautifulSoup提取网页数据写入指定的Excel表格1.前言2.实现步骤3.结果如下: 1.前言 任务需求:测试的报告是HTML格式,我需要把报告...
  • 红色区域在每个文件的行列都相同 ![图片说明](https://img-ask.csdn.net/upload/201912/23/1577085305_659437.png) 只提取BH32 sheet页的内容 ![图片说明]...
  • Python 自动整理 Excel 表格

    千次阅读 2019-08-01 14:48:08
    Python 自动整理 Excel 表格 相信有不少朋友日常工作会用到 Excel 处理各式表格文件,更有甚者可能要花大把时间来做繁琐...我们要做的是上表中提取数据,来生成一份符合以下要求的表格: 按照以下分组名单 grou...
  • 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题...这篇文章要做的事情,如标题所述,就是提取多张excel表上的数据或信息,合并汇总到一张新表上,这是我们工作经常会.
  • 利用pdfplumber提取文字 pdfplumber.open(pdf路径)/pdf.pages[页数]/page.extract_text() import os os.chdir('D:\\python_major\\auto_office10') import pdfplumber with pdfplumber.open("Netease Q2 2019...
  • 使用PythonPDF文件中提取数据

    千次阅读 2020-07-08 15:55:09
    然而,由于可移植文档格式(pdf)文件是最常用的文件格式之一,因此每个数据科学家都应该了解如何pdf文件中提取数据,并将数据转换为诸如“csv”之类的格式,以便用于分析或构建模型。 很多人学习python,不知道...
  • C#读取Excel表格数据实例

    热门讨论 2015-03-08 19:25:04
    用C#开发的一读取Excel表格的Demo,无需安装office。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,366
精华内容 20,946
关键字:

从每个表格中提取固定的数据