当前位置: 首页 > wzjs >正文

个人网站需求分析余姚seo智能优化

个人网站需求分析,余姚seo智能优化,网站是做排行,日本做爰网站需求背景: 问题描述: 我有一份包含多份合同的PDF文件,需要将这些合同分开并进行解析。 传统方法(如以固定页数作为分割点)不够灵活,无法满足需求。 现有方法的不足: 网上找到的工具大多依赖手动…

需求背景:

  1. 问题描述
    我有一份包含多份合同的PDF文件,需要将这些合同分开并进行解析。
    传统方法(如以固定页数作为分割点)不够灵活,无法满足需求。

  2. 现有方法的不足
    网上找到的工具大多依赖手动输入页数作为分割点,这种方式不够智能,且需要用户提前知道每份合同的页数范围,效率较低。

灵感核心:

  1. 动态分割点
    通过输入一个唯一关键字(如“合同编号”、“甲方”等)来自动定位合同的分割点,从而实现自动分割。

  2. 实现步骤:

    1、将PDF文件的每一页转换为图片。

    2、使用OCR技术识别图片内容,提取关键字。

    3、定位关键字所在的页码,并将这些页码作为分割点。

    4、使用PDF处理工具将PDF文件拆分为多个独立文件。

    注意:1,2步是因为我的PDF文件包含图片,读取内容困难,所以采用OCR识别技术提取文字。如果你的不是就可以修改成直接读取pdf文件内容。

代码实现

1、用到了百度OCR所以需要去获取access_token,代码如下:

import requests
import json"""
client_id,client_secret去百度OCR中获取
详情看链接:https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu
"""def getAccessToken(client_id, client_secret):url = f"https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={client_id}&client_secret={client_secret}"payload = ""headers = {'Content-Type': 'application/json','Accept': 'application/json'}response = requests.request("POST", url, headers=headers, data=payload)if str(response) == "<Response [200]>":# print(response.text)# 将JSON字符串解析为字典data = json.loads(response.text)token = data.get("access_token")print("执行成功:", response)print("access_token:", token)return tokenelse:print("错误信息:", response.content)return response

2、具体实现代码

需要提前下载以下库:PyMuPDF,requests,PyPDF2 

import re
from PyPDF2 import PdfReader, PdfWriter
import fitz  # PyMuPDF
import base64
import os
import requestsdef pdf_to_images(pdf_path, output_folder, dpi=300):"""将PDF文件的每一页转换为图片。参数:pdf_path (str): 输入PDF文件的路径。output_folder (str): 输出图片文件夹路径。dpi (int): 图片分辨率,默认为300 DPI。"""# 确保输出文件夹存在if not os.path.exists(output_folder):os.makedirs(output_folder)# 打开PDF文件doc = fitz.open(pdf_path)# 遍历每一页并转换为图片for page_num in range(len(doc)):page = doc.load_page(page_num)pix = page.get_pixmap(dpi=dpi)image_path = os.path.join(output_folder, f"page_{page_num + 1}.png")pix.save(image_path)print(f"已保存图片:{image_path}")def perform_ocr(image_path, access_token):"""对单个图片文件进行OCR识别。参数:image_path (str): 图片文件的路径。access_token (str): OCR API的访问令牌。返回:str: OCR识别结果。"""ocr_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"headers = {'Content-Type': 'application/x-www-form-urlencoded'}# 读取图片文件并进行Base64编码with open(image_path, 'rb') as img_file:img_data = base64.b64encode(img_file.read())# 发送OCR请求response = requests.post(f"{ocr_url}?access_token={access_token}",data={'image': img_data},headers=headers)# 解析OCR结果if response.status_code == 200:ocr_result = response.json()return '。'.join(item['words'] for item in ocr_result.get('words_result', []))return ""def find_split_pages(image_folder, access_token, search_text):"""查找包含目标文本的页码。参数:image_folder (str): 包含图片的文件夹路径。access_token (str): OCR API的访问令牌。search_text (str): 要查找的文本。返回:list: 包含目标文本的页码列表。"""split_pages = []# 遍历图片文件夹中的所有图片for filename in os.listdir(image_folder):if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp')):image_path = os.path.join(image_folder, filename)result = perform_ocr(image_path, access_token)# 提取页码并检查是否包含目标文本page_num = int(re.findall(r'\d+', filename)[0])if search_text in result:split_pages.append(page_num)return sorted(split_pages)def split_pdf(input_pdf, split_pages, output_folder):"""根据指定的页码分割PDF文件。参数:input_pdf (str): 输入PDF文件的路径。split_pages (list): 分割点页码列表。output_folder (str): 输出文件夹路径。"""# 确保输出文件夹存在if not os.path.exists(output_folder):os.makedirs(output_folder)# 获取输入PDF的文件名前缀output_prefix = os.path.splitext(os.path.basename(input_pdf))[0]# 打开PDF文件with open(input_pdf, 'rb') as pdf_file:reader = PdfReader(pdf_file)prev_split = 0# 分割PDFfor part_num, split_page in enumerate(split_pages, 1):writer = PdfWriter()for page_num in range(prev_split, split_page):writer.add_page(reader.pages[page_num])output_path = os.path.join(output_folder, f"{output_prefix}_part{part_num}.pdf")with open(output_path, 'wb') as output_file:writer.write(output_file)print(f"已保存分割文件:{output_path}")prev_split = split_page# 保存剩余部分if prev_split < len(reader.pages):writer = PdfWriter()for page_num in range(prev_split, len(reader.pages)):writer.add_page(reader.pages[page_num])output_path = os.path.join(output_folder, f"{output_prefix}_part{len(split_pages) + 1}.pdf")with open(output_path, 'wb') as output_file:writer.write(output_file)print(f"已保存最后分割文件:{output_path}")def main():# 输入和输出路径input_pdf = r"D:\project\合同\供应商版本采购合同\1月份合同.pdf"image_folder = r"D:\project\合同\供应商版本采购合同\分割"output_folder = r"D:\project\合同\供应商版本采购合同\分割结果"# OCR相关参数search_text = "双方买卖约定"access_token = "24.2******"# 将PDF转换为图片pdf_to_images(input_pdf, image_folder)# 查找包含目标文本的页码split_pages = find_split_pages(image_folder, access_token, search_text)if not split_pages:print(f"未找到包含文本 '{search_text}' 的页,无法进行分割。")return# 分割PDF文件split_pdf(input_pdf, split_pages, output_folder)if __name__ == "__main__":main()

http://www.dtcms.com/wzjs/500947.html

相关文章:

  • 创办网站需要怎么做性能优化大师
  • 全椒有做网站的吗google优化师
  • asp.net 网站开发seo优化服务价格
  • 网络专业的网站建设价格郑州竞价托管代运营
  • 怎么把自己做的网页生成链接win10最强优化软件
  • 深圳专业做网站服务湖人最新消息
  • 模板图片可爱seo项目是什么
  • 网站开发过程中的方法百度电脑版登录网站
  • 做演讲视频的网站百度开店怎么收费
  • 中国商检局做备案网站seo排名优化方式
  • 济南网站搭建公司互联网媒体广告公司
  • 中国建筑集团有限公司简介抖音seo关键词优化排名
  • 做网站去哪里备案游戏推广员每天做什么
  • 怎么才能在百度上搜到自己的网站百度排行榜前十名
  • 定制化网站广州百度快速优化排名
  • wordpress 爱范儿主题哈尔滨seo服务
  • 哪个网站做相片书好查询网站流量的网址
  • 怎么建手机网站平台专业培训心得体会
  • 杭州做网站小程序公司百度新闻官网首页
  • 国内优秀公司网站武汉全网营销推广公司
  • 网站设计时多页面切换时什么控件郴州网站定制
  • 代理网站官网百度最新秒收录方法2022
  • org是国外的网站吗衡阳seo
  • 网站建设与规划总结做优化关键词
  • logo免费设计在线山西seo排名厂家
  • 蓝色企业网站模板账户竞价托管哪里好
  • 福建省中嘉建设工程有限公司网站网络营销推广策划的步骤是什么
  • 用网页制作个人网站seo服务如何收费
  • 网站semseo先做哪个小网站关键词搜什么
  • 广州网站改版 网站建设网站seo技术教程