根据url链接下载pdf,并提取图中文本

该代码实现了一个从URL下载PDF文件,将其转换为PNG图像,然后使用pytesseract进行中文OCR识别的流程。文件名通过hashlib进行MD5编码以确保唯一性,整个过程涉及文件操作、网络请求和图像处理技术。
摘要由CSDN通过智能技术生成
# -*- coding: utf-8 -*-
import fitz
import hashlib
import requests as req
import pytesseract
from PIL import Image
import os

title = 'aaaa'
if not os.path.isdir('./xxxx_test'):
    os.mkdir('./xxxx_test')
files_path = './xxxx_test'
rename_title = hashlib.md5(title.encode('utf-8'))
title_md5 = rename_title.hexdigest()
the_path = os.path.join(files_path, title_md5)
the_path = f'{the_path}.pdf'


def download_file(link, the_path):
    """下载文件."""
    try:
        response = req.get(link, stream=True, timeout=500)
        chunk_size = 1024
        with open(the_path, "wb") as file:
            for data in response.iter_content(chunk_size=chunk_size):
                file.write(data)
                # count += len(data)
            return True
    except req.RequestException:
        print('下载文件失败')
        return False


def convert_img(the_path, png_dir):
    doc = fitz.open(the_path)
    pdf_name = os.path.splitext(the_path)[0]
    print(pdf_name)
    print(doc.pageCount)
    i = 0

    for pg in range(doc.pageCount):
        i = i + 1
        png_name = str(i)+".png"
        print(i)
        png_path = os.path.join(png_dir, png_name)
        page = doc[pg]
        rotate = int(0)
        zoom_x = 2.0
        zoom_y = 2.0
        trans = fitz.Matrix(zoom_x, zoom_y).prerotate(rotate)
        pm = page.get_pixmap(matrix=trans, alpha=False)
        pm.save(png_path)


def get_pdf_txt(png_dir):
    num = len(os.listdir(png_dir))
    text =''
    for i in range(num):
        i = i+1
        png_name = str(i) + ".png"
        png_path = os.path.join(png_dir, png_name)
        image = Image.open(png_path)
        # pytesseract.pytesseract.tesseract_cmd = 'xxxxxxxxxxxxxxxxx'
        text += pytesseract.image_to_string(image, lang='chi_sim')
        os.remove(png_name)
    print(text)


url = 'xxxxxxxx'
state = download_file(url, the_path)
if not os.path.isdir('./xxxx_png'):
    os.mkdir('./xxxx_png')
if not os.path.isdir(f'./xxxx_png/{title}'):
    os.mkdir(f'./xxxx_png/{title}')
png_dir = f'./xxxx_png/{title}'
convert_img(the_path, png_dir)
get_pdf_txt(png_dir)

Python中,你可以使用多个库来完成从网页下载PDF文件并将其转换为TXT文本的任务。以下是这个过程的一般步骤: 1. **下载PDF文件**:你可以使用`requests`库来发送HTTP请求,下载网页上的PDF文件。首先需要安装这个库(如果尚未安装):`pip install requests`。然后,你可以使用以下代码来下载PDF: ```python import requests # PDF文件URL pdf_url = 'http://example.com/somefile.pdf' # 发送GET请求 response = requests.get(pdf_url) # 确保请求成功 response.raise_for_status() # 将PDF内容保存到文件 with open('downloaded_file.pdf', 'wb') as f: f.write(response.content) ``` 2. **将PDF转换为TXT**:Python中有一些库可以处理PDF内容,如`PyMuPDF`(也称为`fitz`)或`PyPDF2`。首先安装其中一个库(例如`PyMuPDF`):`pip install PyMuPDF`。然后,你可以使用该库来读取PDF内容,并将其转换为TXT。以下是一个使用`PyMuPDF`的示例: ```python import fitz # PyMuPDF # 打开PDF文件 pdf_document = fitz.open("downloaded_file.pdf") text = "" # 遍历PDF的每一页 for page in pdf_document: # 提取并拼接每页的文本内容 text += page.get_text() # 关闭PDF文件 pdf_document.close() # 输出或保存TXT内容 print(text) # 或者写入到TXT文件 with open('converted_text.txt', 'w', encoding='utf-8') as f: f.write(text) ``` 3. **保存TXT文件**:最后,你可以将提取文本内容保存到一个文本文件中,就像上述代码中所做的那样。 以上就是使用Python从网页下载PDF并转换为TXT文本的步骤。需要注意的是,PDF文件可能包含复杂的布局和格式,所以转换过程中可能会丢失一些原始格式和结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值