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

发布时间:2024年01月04日

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")

文章来源:https://blog.csdn.net/m0_62746771/article/details/135359107
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。