python利用fitz/pymupdf识别pdf内容并填充到数据库中

1.安装pymupdf

在终端执行命令

pip install pymupdf

安装时间较长,等待一段时间

2.安装 pymysql

 pip install pymysql

3.识别单个pdf

(1)定义个方法:

import fitz
def parsePDF(filePath):
    with fitz.open(filePath) as doc:
        text = ""
        for page in doc.pages():
            text += page.get_text()
        if text:
            return text

(2)在下边调用

parsePDF("zhangsan.pdf")

注:这个pdf放在py文件的同级目录下

4.识别文件夹中所有的pdf

import os
##遍历文件夹zkjn中的所有pdf
def __getattr__(folder_path):
    ##循环读取文件夹中的文件
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            if file.endswith(".pdf"):
                filePath = os.path.join(root, file)

                ##这里我对文件路径进行了处理获取了文件名称  根据自己的业务来就行
                pdfName = filePath[filePath.index("zkjn") + 5:]
                print(pdfName)

                ##调用前边写的单个读取pdf的方法
                text = parsePDF(filePath)
                
                ##这一段是根据自己的业务对读取的内容进行处理 
                result = text[text.index("罗庄祥园") + 4:]  #截取“罗庄祥园”之后的字符串
                houseNo = result[:result.index("下载")]   #截取“下载”这个字符串之前的数据
                print(houseNo)

__getattr__("zkjn") ##在这里调用上面的方法  参数为文件夹名称

5.连接数据库存入库中

import pymysql
##这里写你自己的数据库配置
db = pymysql.connect(host='localhost', port=3306, user='root', password='123456', database='luogezhuang', charset='utf8')

cur = db.cursor()  # 获取会话指针
##写sql
sql = 'INSERT INTO h_fapiao_pdf ( houseno, pdf_name) VALUES( %s, %s)' 
cur.execute(sql, (houseNo, pdfName))  # 执行SQL语句
db.commit()  # 固定写法,作用为提交修改
cur.close()  # 关闭会话
db.close()  # 关闭数据库连接

6.完事,完整代码如下:

import fitz
import os
import pymysql
db = pymysql.connect(host='localhost', port=3306, user='root', password='123456', database='luogezhuang', charset='utf8')



def parsePDF(filePath):
    with fitz.open(filePath) as doc:
        text = ""
        for page in doc.pages():
            text += page.get_text()
        if text:
            return text

##遍历文件夹zkjn中的所有pdf
def __getattr__(folder_path):
    cur = db.cursor()  # 获取会话指针
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            if file.endswith(".pdf"):
                filePath = os.path.join(root, file)
                pdfName = filePath[filePath.index("zkjn") + 5:]
                print(pdfName)
                text = parsePDF(filePath)

                result = text[text.index("罗阁庄泰祥园") + 6:]  #截取罗各庄泰祥园之后的数据
                houseNo = result[:result.index("下载")]   #截取下载之前的数据
                print(houseNo)


                sql = 'INSERT INTO h_fapiao_pdf ( houseno, pdf_name) VALUES( %s, %s)'
                cur.execute(sql, (houseNo, pdfName))  # 执行SQL语句
                db.commit()  # 固定写法,作用为提交修改
    cur.close()  # 关闭会话
    db.close()  # 关闭数据库连接


__getattr__("zkjn")

  • 18
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值