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.1.tar.gz (10.6 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: pdf2tables-0.3.1.1.tar.gz
  • Upload date:
  • Size: 10.6 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.1.tar.gz
Algorithm Hash digest
SHA256 3a7def25eb2798c9954ef2c025b3b42f5d02f1688a08c628c3015ee82d10bdc7
MD5 efc658531b2daa0a165f70d6ef79a404
BLAKE2b-256 f3621d7aeb141e3bda622076559cc7c57152884e22135f659b3f01b3ccfada71

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pdf2tables-0.3.1.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 77da97b0e11b3a75f78527a809c10831ae21e58052ea1b11e3261973f60032d7
MD5 b04fb532890cae0730d7f8d34ca915b3
BLAKE2b-256 c38fa38856d73b31b2d1edcf1c71e3e0de9eeb8704301664aab19871282d3ced

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