Skip to main content

extract tables from pdf using camelot, if page is image-base, use ocr to extract

Project description

Pdf表格抽取

简介

camelot是一个很棒的pdf表格数据抽取库,但遗憾的是它不能处理基于图片的pdf表格。pdf2tables是对camelot的一个补充,pdf中能够使用camelot抽取的表格,用camelot抽取,而camelot处理不了的图片,则使用ocr的方式识别处理。

版权

pdf2talbes使用了部分 @lxj0276 处理图片表格的代码 github tableDetect。以及SongpingWang发表的文章OpenCV—Python 表格提取 中的代码(版权声明:此文为博主SongpingWang原创文章,遵循CC BY-SA 4.0版权协议,转载请附上原文出处链接和本声明),向两位表示感谢。

使用方式

环境需求

pdf2tables需要安装以下软件才能正常运行

ocr识别时,tesseract与aliyun可以任选其一,tesseract免费但速度较慢,aliyun速度快但需要付费(前500条免费)。

使用方式

# 示例:

from pdf2tables import pdf_tables

imgOcrSettings = {
        'pytesseract_kernel': np.ones((4, 4), np.uint8),
        'pytesseract_bin_threshold': 127,
        'pytesseract_iterations': 1,
        # 单元格面积范围,决定哪些单元格会被选中
        'pytesseract_areaRange': [10000, 100000],
        'pytesseract_isDebug': False,
        # 单元格边框,用来更精确地获取文本
        'pytesseract_border': 10,
        'img_ocr_type': ImgOcrType.Pytesseract,
        'aliyun_appcode': 'b8f41a5f9b664a45af2bc9f58666a17e'
    }

    tables = extract(
        'C:/pdf2tables/test_data/Jan-2010.pdf', lang='eng+tha', **imgOcrSettings)

配置说明

示例imgOcrSettings配置中:

  • pytesseract前缀的为使用tesseract的配置,在img_ocr_type等于ImgOcrType.Pytesseract时生效。
  • aliyun前缀的为aliyun配置

pdf2tables会将ocr配置传递到image_tables模块中,配置使用前缀进行区分,如果使用aliyun,则可以忽略所有pytesseract配置,反过来也一样。

返回结果

表格抽取完毕后,返回PageTable列表, PageTable定义如下

@dataclass
class PageTable:
    '''
    表格抽取结果类
    '''

    # 页数
    page: int
    # 数据列表
    datas: []
    # 本页文本
    text: str

Debug

示例imgOcrSettings配置中,如果isDebug设置为True,那么image_tables模块将会显示待分割抓取的图片,并将其保存在硬盘上。

例如:

图片

图片中绿色的边框为单元格,红色圆点为数据数组的标识,如果单元格有未被识别的情况,表现为某些单元格没有绿色边框包围,那么需要调整pytesseract_areaRange参数,让所有的表格都能够被绿色边框包围。

image_tables模块

image_tables模块是使用tesseract抽取图片表格数据的模块,它会查找图片中的表格范围,截取表格为新图片,然后按单元格切分表格,最后将单元格图片中的文字识别出来。识别后的文字会按单元格的顺序存放。

使用方法直接看源码吧,都有注释

aliyun_tables模块

使用阿里云接口抽取表格数据

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pdf2tables-0.3.1.2.tar.gz (10.3 kB view details)

Uploaded Source

Built Distribution

pdf2tables-0.3.1.2-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file pdf2tables-0.3.1.2.tar.gz.

File metadata

  • Download URL: pdf2tables-0.3.1.2.tar.gz
  • Upload date:
  • Size: 10.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.37.0 CPython/3.7.5

File hashes

Hashes for pdf2tables-0.3.1.2.tar.gz
Algorithm Hash digest
SHA256 b82533cc2387c4745ed3481c54bce68eae412eb840f711720614d84d6d91a1eb
MD5 f81af0601175ab9d0cb9a3d92ffc45fb
BLAKE2b-256 d574e2672bc12f5d5f901c0eace0895cf270d2d4a723a1c5c2703816cfcc52e2

See more details on using hashes here.

File details

Details for the file pdf2tables-0.3.1.2-py3-none-any.whl.

File metadata

  • Download URL: pdf2tables-0.3.1.2-py3-none-any.whl
  • Upload date:
  • Size: 12.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.37.0 CPython/3.7.5

File hashes

Hashes for pdf2tables-0.3.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1a4ed51f62fe8e2aab933f3cb041df342f24a2e709c516b081c892593d6e4eb9
MD5 8cd5f6f53474e41515506fdffee8bed6
BLAKE2b-256 44d3e659d24dde7952e0c56e78fe226b694f9a654d1c427ec4cd8830eadb4e31

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page