千问3.5-2B实战教程:用JSON接口批量处理PDF截图,自动生成结构化图文摘要

张开发
2026/4/13 13:01:20 15 分钟阅读

分享文章

千问3.5-2B实战教程:用JSON接口批量处理PDF截图,自动生成结构化图文摘要
千问3.5-2B实战教程用JSON接口批量处理PDF截图自动生成结构化图文摘要1. 为什么需要批量处理PDF截图在日常工作中我们经常会遇到需要处理大量PDF截图的情况。比如从学术论文中提取关键图表和说明整理产品文档中的界面截图和功能描述将会议资料中的幻灯片内容转换为结构化笔记传统方法是人工一张张查看截图并记录内容效率低下且容易出错。千问3.5-2B的视觉理解能力可以帮我们自动化这个过程。2. 准备工作与环境配置2.1 获取访问权限首先确保你可以访问千问3.5-2B的Web服务https://gpu-hv221npax2-7860.web.gpu.csdn.net/2.2 安装必要工具我们需要Python环境来处理PDF和调用APIpip install PyMuPDF requests pillow2.3 准备测试数据找一个包含多页截图的PDF文件作为测试素材。如果没有现成的可以用以下代码从网页生成PDFimport fitz # PyMuPDF doc fitz.open() page doc.new_page() rect fitz.Rect(0, 0, 400, 600) page.insert_image(rect, filenamescreenshot.png) doc.save(test.pdf)3. 核心实现步骤3.1 提取PDF中的图片使用PyMuPDF从PDF中提取所有图片def extract_images_from_pdf(pdf_path, output_folder): import os os.makedirs(output_folder, exist_okTrue) doc fitz.open(pdf_path) image_paths [] for page_num in range(len(doc)): page doc.load_page(page_num) images page.get_images() for img_index, img in enumerate(images): xref img[0] base_image doc.extract_image(xref) image_path f{output_folder}/page{page_num}_img{img_index}.png with open(image_path, wb) as f: f.write(base_image[image]) image_paths.append(image_path) return image_paths3.2 调用千问3.5-2B的JSON接口创建调用API的函数import requests import base64 def call_qwen_api(image_path, prompt): with open(image_path, rb) as f: img_base64 base64.b64encode(f.read()).decode(utf-8) payload { image: img_base64, prompt: prompt, max_length: 256, temperature: 0.3 } response requests.post( https://gpu-hv221npax2-7860.web.gpu.csdn.net/api, jsonpayload ) return response.json()[result]3.3 设计结构化摘要模板根据需求设计输出格式例如def generate_summary(image_path, description): return { image_file: image_path, summary: description, keywords: extract_keywords(description), timestamp: datetime.now().isoformat() }4. 完整批处理脚本将以上功能整合成完整脚本import os from datetime import datetime import json def batch_process_pdf(pdf_path, output_json): # 步骤1提取图片 image_folder temp_images image_paths extract_images_from_pdf(pdf_path, image_folder) results [] # 步骤2批量处理每张图片 for img_path in image_paths: # 基础描述 description call_qwen_api( img_path, 请用中文详细描述这张图片的内容包括主要元素、文字信息和整体风格 ) # 关键信息提取 keywords call_qwen_api( img_path, 提取这张图片中最关键的3-5个中文关键词 ) # 结构化存储 results.append({ image: os.path.basename(img_path), description: description, keywords: keywords.split(、), page_number: int(img_path.split(_)[0][4:]), processing_time: datetime.now().isoformat() }) # 保存结果 with open(output_json, w, encodingutf-8) as f: json.dump(results, f, ensure_asciiFalse, indent2) return results5. 实际应用案例5.1 学术论文整理对一篇30页的计算机视觉论文运行脚本batch_process_pdf(cv_paper.pdf, paper_summary.json)输出示例[ { image: page4_img0.png, description: 这是一张算法流程图展示了YOLOv7的网络结构..., keywords: [YOLOv7, 目标检测, 神经网络, 流程图], page_number: 4 }, { image: page12_img0.png, description: 实验结果的对比表格显示在COCO数据集上..., keywords: [实验结果, COCO, 准确率, 对比], page_number: 12 } ]5.2 产品文档处理处理一份产品说明文档batch_process_pdf(user_manual.pdf, manual_summary.json)典型输出{ image: page3_img0.png, description: 手机设置界面的截图显示网络设置选项..., keywords: [设置界面, WiFi, 移动网络, 蓝牙], page_number: 3 }6. 性能优化建议6.1 并行处理加速使用多线程提高处理速度from concurrent.futures import ThreadPoolExecutor def parallel_process_images(image_paths): with ThreadPoolExecutor(max_workers4) as executor: results list(executor.map(process_single_image, image_paths)) return results6.2 缓存机制避免重复处理相同图片import hashlib def get_image_hash(image_path): with open(image_path, rb) as f: return hashlib.md5(f.read()).hexdigest()6.3 错误处理增强脚本的健壮性def safe_call_api(image_path, prompt, retries3): for attempt in range(retries): try: return call_qwen_api(image_path, prompt) except Exception as e: print(fAttempt {attempt1} failed: {str(e)}) time.sleep(2) return None7. 总结与下一步通过本教程我们实现了自动从PDF提取截图调用千问3.5-2B的API分析图片内容生成结构化的图文摘要支持批量处理提高效率下一步改进方向添加更精细的内容分类支持多轮问答完善摘要细节开发可视化界面展示结果获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

更多文章