精华内容
下载资源
问答
  • word表格提取数据到excel表格,可以批量提取数据自动导入的excel表格
  • Word表格批量提取数据到Excel
  • 该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文档如下:
    在这里插入图片描述
    提取结果如下:
    在这里插入图片描述

    展开全文
  • 主要介绍了Python 用三行代码提取PDF表格数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 如何在EXCEL表格中随机提取数据 如何在EXCEL表格中随机提取数据
  • PythonPDF中提取表格

    2020-01-04 17:52:54
    使用Python的pdfplumber模块PDF指定的各个页面中提取对应的表格,全部存入pandas的DataFrame中。将表格中不关注的行列删除后,保存到Excel电子表格中。 源码将STM32规格书中指定封装的引脚表提取到Excel中,方便...
  • Excalibur: 一个用于PDF中提取表格数据的Web界面,基于Camelot,采用Python 3开发。Excalibur仅适用于基于文本的PDF而不适用于扫描的文档
  • 一、使用工具及python包介绍 ...json 用来处理json数据,或者把字符串等其他格式的数据转化为json数据。 base64 用来对图片进行base64编码,这是根据API的要求做的。 xlwings 用来与Excel进行交互,几乎可以取代VBA,
  • Excalibur:一个Web界面,用于PDF中提取表格数据 Excalibur是一个Web界面,可以Python 3编写的PDF中提取表格数据! 它由驱动。 注意: Excalibur仅适用于基于文本的PDF,不适用于扫描的文档。 (如塔布拉,...
  • 怎么提取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中的表格数据

    展开全文
  • 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 字符边缘、线边缘、单词边缘

    在这里插入图片描述


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

    展开全文
  • 在文本中,特别是表格文件中,将数值提取出来,生成数组。包括浮点和整型数字。处理的对象可以是excel或者是txt,以及ascii文件,其中的文本间隔符本程序默认是“;”,大家可以自行修改间隔符参数再使用。
  • 常用的表格数据存储文件格式——CSV,Microsoft Excel,Google Excel 。Python通常称为粘合语言。...本文的学习内容:从谷歌表格提取数据从CSV文件中提取数据从Excel文件中提取数据本文适用于以下读者...

    常用的表格数据存储文件格式——CSV,Microsoft Excel,Google Excel 。

    6aac44c81443532028e2af9741128920.jpg-wh_651x-s_374195308.jpg

    Python通常称为粘合语言。这个名称归因于人们逐渐开发出的大量接口库和特征,也得益于广泛的使用和良好的开源社区。这些接口库和特征能直接访问不同的文件格式,还可以访问数据源如数据库、网页和各种API。

    本文的学习内容:

    从谷歌表格中提取数据

    从CSV文件中提取数据

    从Excel文件中提取数据

    本文适用于以下读者:

    Python初学者

    必须定期处理数据的人员

    由于本文附有代码,建议处在开发环境之下(建议使用JupyterNotebook / Lab),并建立一个新的笔记本。

    源代码和文件:https://github.com/FBosler/Medium-Data-Extraction

    解决方法

    本文将带你进入一个虚构但却可能异常熟悉的场景。你可以结合不同的数据来源去创建报告或进行分析。

    注意!!!下面的示例和数据纯属虚构。

    假设,你的任务是搞清楚如何提高销售团队的业绩。假设潜在的客户有相当自发的需求。这种情况发生时,销售团队将订单导入系统。然后,销售代表们会在订单交付时安排一个会议。具体日期有时在交付期之前,有时在交付期之后。你的销售代表有一笔费用预算,会在开会期间支付餐费。他们负责报销这笔费用,并将发票交给会计团队处理。在潜在客户决定是否要接受报价后,销售代表会跟踪订单是否达成。

    可使用以下三个资料来源进行分析:

    100,000 份订单 (Google表格)

    约50,000张餐费发票(Excel文件)

    负责公司及销售代表名单(CVS文件)

    获取谷歌表格数据

    访问谷歌表格是这三种方法中最复杂的,因为你需要在使用谷歌表格API前设置一些证书。理论上,你可以获取一个公开可用的谷歌表(即提取源HTML代码)但必须使用Beautiful Soup之类的工具进行大量数据操作,才能将HTML转储转换为有用的内容。我确实尝试过,但是结果很糟糕,不值得一试。所以,API就是如此。此外,还将使用gspread无缝转换数据分析DataFrame。

    获取OAuth2证书

    前往谷歌开发人员控制台,创建一个新项目(或选择现有的项目)。点击“创建项目”。如果公司使用谷歌邮件,可将其更改为私人帐户,以避免潜在的权限冲突。

    bfc9c0d9dac32e740424b2ba9f999823.jpeg

    为项目命名(名称无关紧要,此处将其命名为媒体数据提取)。

    b1cef62f4117ba7c93c7bde34450fdf8.jpeg

    点击APIs & Services ,前往library。

    e9f32c720b93aa91b2579e5ce35c60d8.jpeg

    启用谷歌Sheets API。单击结果,并在如下页面上单击启用 API。

    cf83ec2167cbcbd126bf887bb3d77f68.jpeg

    创建一个服务帐户和密钥文件。服务帐户是用于程序访问的专用帐户,访问权限有限。服务帐户可以而且应该通过有尽可能多的特定权限项目进行设置,当前的任务也需要如此。

    befdda34c48de7040304f6f52da17c9a.jpeg

    创建JSON(另一种文件格式)密钥文件。在角色上,选择“Project -> Viewer”。

    e85fc9d47512e223ac2dbe4d18f8a7b9.jpeg

    如果还没有在前面的步骤中设置角色请立即设置。

    6d9f7300f8f84bd5e522d9a37cdee703.jpeg

    注意:设置为“Viewer”会存在一些限制。如果希望以编程方式创建谷歌表格,则必须选择不同的设置。

    然后,私有JSON密钥文件就可以下载或自动下载了。建议将该文件重命名为'Medium_Data_Extraction_Key,并将文件移动到JupyterNotebook文件夹中,以便与下面的示例无缝衔接。JSON文件包含最近创建的服务帐户证书。

    非常好,就要成功了。

    下载数据

    首先,必须下载并安装其他软件包,在笔记本中运行以下命令。

    !pip install gspread

    !pip install oauth2client

    其次,如果还没有移动密钥文件的话,必须确保将之前创建的JSON密钥文件移动到目前运行的木星笔记本(Jupyternotebook)文件夹中。或者,可以指定一个不同的GOOGLE_KEY_FILE路径。

    fromoauth2client.service_account import ServiceAccountCredentials

    import gspread

    import pandas aspd

    scope = [

    'https://www.googleapis.com/auth/spreadsheets',

    ]

    GOOGLE_KEY_FILE='Medium_Data_Extraction_Key.json'

    credentials = ServiceAccountCredentials.from_json_keyfile_name(GOOGLE_KEY_FILE, scope)

    gc = gspread.authorize(credentials)

    wokbook_key ='10HX66PbcGDvx6QKM8DC9_zCGp1TD_CZhovGUbtu_M6Y'

    workbook = gc.open_by_key(wokbook_key)

    sheet = workbook.get_worksheet(0)

    values= sheet.get_all_values()

    sales_data = pd.DataFrame(values[1:],columns=values[0])

    WORKBOOK_KEY是为本章内容准备的谷歌表格的工作簿id。

    WORKBOOK_KEY = '10HX66PbcGDvx6QKM8DC9_zCGp1TD_CZhovGUbtu_M6Y'

    这份工作簿是公开的,如果想下载不同的数据,需要更改WORKBOOK_KEY。URL有问题的话,id通常可以在谷歌表格的最后两个反斜杠之间找到。

    获取CSV数据

    可以从repo以传统方式下载CSV数据,也可以使用以下代码片段进行下载。同样地,可能需要在笔记本上安装并运行缺失的请求包:

    !pip install requests

    import requests

    url ='https://raw.githubusercontent.com/FBosler/Medium-Data-Extraction/master/sales_team.csv'

    res = requests.get(url, allow_redirects=True)

    withopen('sales_team.csv','wb') asfile:

    file.write(res.content)

    sales_team = pd.read_csv('sales_team.csv')

    CSV数据的美妙之处在于Python /panda可以立即进行处理。Excel则需要额外的库。

    获取Excel数据

    在开始之前,很可能还要安装openpyxl和xlrd,这能让Pandas也可以打开Excel表。

    !pip install openpyxl

    !pip install xlrd

    完成这些步骤之后,可以相同的方式获得Excel数据,并将其加载到另一个DataFrame中。

    url ='https://github.com/FBosler/Medium-Data-Extraction/blob/master/invoices.xlsx?raw=true'

    res = requests.get(url, allow_redirects=True)

    withopen('invoices.xlsx','wb') asfile:

    file.write(res.content)

    invoices = pd.read_excel('invoices.xlsx')

    大功告成!已经创建了三个不同的Pandas数据帧,并且可以在同一个Jupyter notebook中进行访问:

    sales_data

    sales_team

    invoices

    【编辑推荐】

    【责任编辑:华轩 TEL:(010)68476606】

    点赞 0

    展开全文
  • 1.Word文档如下: 2.代码 # -*- coding: UTF-8 -*- from docx import Document def readSpecTable(filename, specText): document = Document(filename) paragraphs = document.paragraphs ...
  • 将要提取表格的pdf文件重命名为test.pdf,将exe放在test.pdf这个目录,双击即可将pdf中所有表格提取到同一目录下的Result.xls文件中。
  • ExcelSplit 将一个包含多条数据信息的Excel按照规则提取多张表格,并增加自定义内容。
  • VBA提取文件夹内所有word文档中的表格数据
  • 全文共3211字,预计学习时长6分钟 常用的表格数据存储文件格式——CSV,Microsoft Excel,GoogleExcel Python通常称为粘合语言。这个名称归因于人们逐渐开发出的大量接口库和...谷歌表格提取数据 · CSV...
  • 一个利用PythonPDF表格提取数据的案列 1. 对PDF文件进行处理 我得到的PDF文件是这样的 我需要从中提取出每个煤矿公司的名称和所在的省份、城市、县区以及生产能力,并将数据导入Excel,总共4322条数据(PS...
  • python提取excel表格数据

    千次阅读 2020-08-26 15:26:21
    二、带着我发现的来个问题,寻找解决方法:0、安装模块`xlrd`1、解决哪一行是开始的行的问题:2、解决,表格中有合并单元格的问题:3、结合1和2的问题解决,弄个自动化识别开始数据的行并且提取数据。 一、说明: ...
  • 但如果要操作的表格很大,那么可以使用程序自动执行遍历表格的操作,并提取数据。 看懂以下教程需要会: JavaScript简单语法; 浏览器DevTools(即F12快捷键呼出的界面); Code 选中表格元素 F12调出DevTools,...
  • 本文的文字及图片来源于...这篇文章要做的事情,如标题所述,就是提取多张excel表上的数据或信息,合并汇总到一张新表上,这是我们工作中经常会遇到的事情。 比如将每月销售情况汇总到一张表上进行销售情况分析,比如
  • xlrd:Microsoft Excel电子表格文件中提取数据的Python库
  • Python办公自动化实践1:从多个excel表中提取数据并汇总到一个工作表页中,表格,抽取,sheet 发表时间:2020-04-26 问题:从当前目录或子目录中查询符合条件的excel表格,并从这些excel表格中抽取符合条件的行汇总到...
  • 收集到的信息有时候需要提取整理 ... 选中要输出提取数据表格,输入提取公式(图中公式含有对省与直辖市的判断) 得出数据,表格右下角”十字“ 下拉,整列提取完毕 格式化 开始 套用表格
  • 基于MVC的PDF处理程序,包括PDF表格填写,提交, 上传下载, 合并, 多表格数据提取汇总等操作
  • Python 用用三三行行代代码码提提取取PDF表表格格数数据据 这篇文章主要介绍了... PDF 表格中获取数据是一项痛苦的工 不久前一位开发者提供了一个名为 Camelot 的工具使用三行代码就 能 PDF 文件中提取表格数据 PDF

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 71,704
精华内容 28,681
关键字:

从多张表格里提取数据