高准确率PDF文本抓取 PDF内容抓取 pdf关键字抓取

该工具耗费了我大量时间精力各种测试,在这里分享下。
先上成品下载地址:
CSDN:
https://download.csdn.net/download/qq_24250441/19509923

云盘:
链接:https://pan.baidu.com/s/1uTnkYXh8jBcaeda-JoQDuQ
提取码:jbkv

原计划是使用第三方库进行识别提取的,但python的各种编码问题让人痛不欲生,经过几百次的尝试最后放弃这种方法。

但并不是这些第三方库没用,简单说下部分库。

在这里插入图片描述

PyPDF2系列、pdfrw及pikepdf专注对已经存在的PDF的操作(分割、合并、旋转等),前两者基本处于停止维护的状态。
pdfplumber及其依赖pdfminer.six专注PDF内容提取,例如文本(位置、字体及颜色等)和形状(矩形、直线、曲线),前者还有解析表格的功能。
ReportLab专注PDF页面内容(文本、图、表等)的创建。
PyMuPDF功能全面且速度快,但是GPL v3的开源协议对商用不友好。

我是使用的是:fitz的部分功能。

放弃直接使用第三方库来做提取主要是因为:
1、编码问题,PDF的编码本来就可能格式各样。
2、准确率问题,PDF里面的表格图片都不能很好处理。
3、版本和兼容性问题。

我的解决思路:
先将PDF转为图片,再通过文字识别获得所有内容,再进行抓取。这个对识别引擎的要求比较高,我使用的是腾讯的识别引擎。

转为图片大部分第三方库都能实现,这里就不展开了,实在不行手动转图片也行。

接下来是通过腾讯识别引擎进行文字识别

import json
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.ocr.v20181119 import ocr_client, models
try: 
    cred = credential.Credential("SecretId", "SecretKey") 
    httpProfile = HttpProfile()
    httpProfile.endpoint = "ocr.tencentcloudapi.com"

    clientProfile = ClientProfile()
    clientProfile.httpProfile = httpProfile
    client = ocr_client.OcrClient(cred, "", clientProfile) 

    req = models.GeneralBasicOCRRequest()
    params = {

    }
    req.from_json_string(json.dumps(params))

    resp = client.GeneralBasicOCR(req) 
    print(resp.to_json_string()) 

except TencentCloudSDKException as err: 
    print(err) 

识别出来后就比较简单了,直接抓取就行。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值