{"schemaVersion":"1.0","type":"Article","types":["Article"],"slug":"building-ai-api-powered-office-automation-bots-kg9le","url":"https://zyvop.com/building-ai-api-powered-office-automation-bots-kg9le","title":"Building AI API-Powered Office Automation Bots","subtitle":null,"tldr":"Directly upload the code (supports all APIs of the openai package. It is recommended to use deepseek, which is cheap and easy to use) Analyze multiple pdf files...","keywords":[],"entities":["I0veD","cyber security researcher","ZyVOP"],"keyTakeaways":["Directly upload the code (supports all APIs of the openai package.","It is recommended to use deepseek, which is cheap and easy to use) Analyze multiple pdf files I use it to analyze blackhat import os import PyPDF2 import openai import time from tqdm import tqdm import argparse 初始系统消息 system_message = \"\"\" 你是一名信息安全专家 帮我分析我提供的ppt中的内容并分别生成标题和 摘要 \"\"\" 标记字符串 MARK_STRING = \"auto_aied\" 读取PDF文件并提取文本内容 def extract_text_from_pdf(pdf_path): with open(pdf_path, 'rb') as file: reader = PyPDF2.PdfReader(file) pages_text = [] for page_num in tqdm(range(len(reader.pages)), desc=&amp;quot;Extracting text from PDF&amp;quot;): page = reader.pages[page_num] page_text = page.extract_text().strip() pages_text.append(page_text) return pages_text 使用OpenAI API生成摘要 def generate_summary_with_openai(text): messages = [ {\"role\": \"system\", \"content\": system_message}, {\"role\": \"user\", \"content\": text} ] start_time = time.time() response = openai.ChatCompletion.create( model=&amp;quot;gpt-4.0-o&amp;quot;, messages=messages ) end_time = time.time() elapsed_time = end_time - start_time result = response.choices[0].message.content.strip() print(f&amp;quot;Generated summary in {elapsed_time:.2f} seconds&amp;quot;) return result 生成Markdown内容 def generate_markdown(pages_text): markdown_content = \"\" # 将多个页面的内容合并成一个请求 batch_size = 15 # 每15页合并成一个请求 summaries = [] for i in tqdm(range(0, len(pages_text), batch_size), desc=&amp;quot;Processing pages&amp;quot;): batch_text = &amp;quot;\\n&amp;quot;.join(pages_text[i:i + batch_size]) summary = generate_summary_with_openai(batch_text) summaries.append(summary) # 合并所有摘要 combined_summary = &amp;quot;\\n&amp;quot;.join(summaries) final_summary = generate_summary_with_openai(combined_summary) # 生成Markdown内容 markdown_content += f&amp;quot;{final_summary}\\n\\n&amp;quot; return markdown_content 保存Markdown文件 def save_markdown_file(markdown_content, output_path): with open(output_path, \"a\", encoding=\"utf-8\") as md_file: md_file.write(markdown_content) 重命名文件 def rename_file(pdf_path, mark_string): base_name, ext = os.path.splitext(pdf_path) new_name = f\"{base_name}_{mark_string}{ext}\" os.rename(pdf_path, new_name) return new_name 主函数 def main(pdf_folder_path, output_path, api_key): # 设置OpenAI API密钥 openai.api_key = api_key # 清空输出文件 with open(output_path, &amp;quot;w&amp;quot;, encoding=&amp;quot;utf-8&amp;quot;) as md_file: md_file.write(&amp;quot;&amp;quot;) # 遍历文件夹中的所有PDF文件 for pdf_file in tqdm(os.listdir(pdf_folder_path), desc=&amp;quot;Processing PDFs&amp;quot;): if pdf_file.endswith(&amp;quot;.pdf&amp;quot;): pdf_path = os.path.normpath(os.path.join(pdf_folder_path, pdf_file)) if MARK_STRING in pdf_file: print(f&amp;quot;Skipping already processed file: {pdf_file}&amp;quot;) continue print(f&amp;quot;Starting analysis for {pdf_file}...&amp;quot;) pages_text = extract_text_from_pdf(pdf_path) print(f&amp;quot;PDF extraction completed for {pdf_file}.&amp;quot;) print(f&amp;quot;Starting Markdown generation for {pdf_file}...&amp;quot;) markdown_content = generate_markdown(pages_text) print(f&amp;quot;Markdown generation completed for {pdf_file}.&amp;quot;) # 添加PDF文件名作为大标题 markdown_content = f&amp;quot;# {pdf_file}\\n\\n{markdown_content}&amp;quot; print(f&amp;quot;Saving Markdown content for {pdf_file}...&amp;quot;) save_markdown_file(markdown_content, output_path) print(f&amp;quot;Markdown content saved for {pdf_file}.&amp;quot;) # 重命名文件 new_name = rename_file(pdf_path, MARK_STRING) print(f&amp;quot;Renamed file to: {new_name}&amp;quot;) if name == \"main\": parser = argparse.ArgumentParser(description=\"Analyze PDFs and generate summaries.\") parser.add_argument(\"pdf_folder_path\", type=str, help=\"Path to the folder containing PDFs\") parser.add_argument(\"output_path\", type=str, help=\"Path to the output Markdown file\") parser.add_argument(\"api_key\", type=str, help=\"OpenAI API key\") args = parser.parse_args() main(args.pdf_folder_path, args.output_path, args.api_key)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;How to use&lt;/p&gt;&lt;p&gt;python pdf_to_markdown.py \"C:\\Users\\Administrator\\Desktop\\blackhat-conferences-2024\\BlackHat ASIA 2024-Slides\" &lt;a href=\"http://output.md/\"&gt;output.md&lt;/a&gt; \"your_openai_api_key\"&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;h2&gt;Analyze local images&lt;/h2&gt;&lt;pre&gt;&lt;code class=\"language-JavaScript\"&gt;import pytesseract from PIL import Image import openai import argparse 设置Tesseract可执行文件路径（如果需要） pytesseract.pytesseract.tesseract_cmd = r'C:\\Program Files (x86)\\Tesseract-OCR\\tesseract.exe' 初始系统消息 system_message = \"\"\" 你现在是一网络安全专家。 要求: 用中文回复 \"\"\" 使用OCR解析图片中的文本 def extract_text_from_image(image_path): image = Image.open(image_path) text = pytesseract.image_to_string(image) return text 使用OpenAI API生成回复 def generate_response_with_openai(text, api_key): openai.api_key = api_key messages = [ {\"role\": \"system\", \"content\": system_message}, {\"role\": \"user\", \"content\": text} ] response = openai.ChatCompletion.create( model=&amp;quot;gpt-4.0-o&amp;quot;, messages=messages ) return response.choices[0].message.content.strip() 主函数 def main(image_path, api_key): # 提取图片中的文本 text = extract_text_from_image(image_path) print(\"OCR解析的文本：\") print(text) # 使用OpenAI API生成回复 response = generate_response_with_openai(text, api_key) print(&amp;quot;OpenAI生成的回复：&amp;quot;) print(response) if name == \"main\": parser = argparse.ArgumentParser(description=\"Extract text from image using OCR and generate response using OpenAI API.\") parser.add_argument(\"image_path\", type=str, help=\"Path to the image file\") parser.add_argument(\"api_key\", type=str, help=\"OpenAI API key\") args = parser.parse_args() main(args.image_path, args.api_key)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;python image_to_text.py \"C:\\Users\\Administrator\\Desktop\\1.jpg\" \"your_openai_api_key”&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;h2&gt;Analyze local ppt&lt;/h2&gt;&lt;pre&gt;&lt;code class=\"language-JavaScript\"&gt;from pptx import Presentation import openai import argparse 初始系统消息 system_message = \"\"\" 你是一名信息安全专家 帮我分析我提供的ppt中的内容并分别生成标题和 摘要 \"\"\" 读取PPT文件并提取文本内容 def extract_text_from_ppt(ppt_path): prs = Presentation(ppt_path) slides_text = [] for slide in prs.slides: slide_text = &amp;quot;&amp;quot; for shape in slide.shapes: if hasattr(shape, &amp;quot;text&amp;quot;): slide_text += shape.text + &amp;quot; &amp;quot; slides_text.append(slide_text.strip()) return slides_text 使用OpenAI API生成标题和摘要 def generate_title_and_summary_with_openai(text, api_key): openai.api_key = api_key messages = [ {\"role\": \"system\", \"content\": system_message}, {\"role\": \"user\", \"content\": text} ] response = openai.ChatCompletion.create( model=&amp;quot;gpt-4-o&amp;quot;, messages=messages ) result = response.choices[0].message.content.strip() return result 生成Markdown内容 def generate_markdown(slides_text, api_key): markdown_content = \"\" for i, text in enumerate(slides_text): # 生成标题和摘要 result = generate_title_and_summary_with_openai(text, api_key) lines = result.split(&amp;quot;\\n&amp;quot;) if lines: title = lines[0].strip() summary = &amp;quot;\\n&amp;quot;.join(lines[1:]).strip() # 生成Markdown内容 markdown_content += f&amp;quot;## {title}\\n\\n&amp;quot; markdown_content += f&amp;quot;{summary}\\n\\n&amp;quot; return markdown_content 保存Markdown文件 def save_markdown_file(markdown_content, output_path): with open(output_path, \"w\", encoding=\"utf-8\") as md_file: md_file.write(markdown_content) 主函数 def main(ppt_path, output_path, api_key): slides_text = extract_text_from_ppt(ppt_path) markdown_content = generate_markdown(slides_text, api_key) save_markdown_file(markdown_content, output_path) if name == \"main\": parser = argparse.ArgumentParser(description=\"Analyze PPT content and generate summaries using OpenAI API.\") parser.add_argument(\"ppt_path\", type=str, help=\"Path to the PPT file\") parser.add_argument(\"output_path\", type=str, help=\"Path to the output Markdown file\") parser.add_argument(\"api_key\", type=str, help=\"OpenAI API key\") args = parser.parse_args() main(args.ppt_path, args.output_path, args.api_key)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;."],"headings":["Analyze multiple pdf files"],"outboundLinks":[],"contentText":"Directly upload the code (supports all APIs of the openai package. It is recommended to use deepseek, which is cheap and easy to use) Analyze multiple pdf files I use it to analyze blackhat import os import PyPDF2 import openai import time from tqdm import tqdm import argparse 初始系统消息 system_message = \"\"\" 你是一名信息安全专家 帮我分析我提供的ppt中的内容并分别生成标题和 摘要 \"\"\" 标记字符串 MARK_STRING = \"auto_aied\" 读取PDF文件并提取文本内容 def extract_text_from_pdf(pdf_path): with open(pdf_path, 'rb') as file: reader = PyPDF2.PdfReader(file) pages_text = [] for page_num in tqdm(range(len(reader.pages)), desc=&amp;quot;Extracting text from PDF&amp;quot;): page = reader.pages[page_num] page_text = page.extract_text().strip() pages_text.append(page_text) return pages_text 使用OpenAI API生成摘要 def generate_summary_with_openai(text): messages = [ {\"role\": \"system\", \"content\": system_message}, {\"role\": \"user\", \"content\": text} ] start_time = time.time() response = openai.ChatCompletion.create( model=&amp;quot;gpt-4.0-o&amp;quot;, messages=messages ) end_time = time.time() elapsed_time = end_time - start_time result = response.choices[0].message.content.strip() print(f&amp;quot;Generated summary in {elapsed_time:.2f} seconds&amp;quot;) return result 生成Markdown内容 def generate_markdown(pages_text): markdown_content = \"\" # 将多个页面的内容合并成一个请求 batch_size = 15 # 每15页合并成一个请求 summaries = [] for i in tqdm(range(0, len(pages_text), batch_size), desc=&amp;quot;Processing pages&amp;quot;): batch_text = &amp;quot;\\n&amp;quot;.join(pages_text[i:i + batch_size]) summary = generate_summary_with_openai(batch_text) summaries.append(summary) # 合并所有摘要 combined_summary = &amp;quot;\\n&amp;quot;.join(summaries) final_summary = generate_summary_with_openai(combined_summary) # 生成Markdown内容 markdown_content += f&amp;quot;{final_summary}\\n\\n&amp;quot; return markdown_content 保存Markdown文件 def save_markdown_file(markdown_content, output_path): with open(output_path, \"a\", encoding=\"utf-8\") as md_file: md_file.write(markdown_content) 重命名文件 def rename_file(pdf_path, mark_string): base_name, ext = os.path.splitext(pdf_path) new_name = f\"{base_name}_{mark_string}{ext}\" os.rename(pdf_path, new_name) return new_name 主函数 def main(pdf_folder_path, output_path, api_key): # 设置OpenAI API密钥 openai.api_key = api_key # 清空输出文件 with open(output_path, &amp;quot;w&amp;quot;, encoding=&amp;quot;utf-8&amp;quot;) as md_file: md_file.write(&amp;quot;&amp;quot;) # 遍历文件夹中的所有PDF文件 for pdf_file in tqdm(os.listdir(pdf_folder_path), desc=&amp;quot;Processing PDFs&amp;quot;): if pdf_file.endswith(&amp;quot;.pdf&amp;quot;): pdf_path = os.path.normpath(os.path.join(pdf_folder_path, pdf_file)) if MARK_STRING in pdf_file: print(f&amp;quot;Skipping already processed file: {pdf_file}&amp;quot;) continue print(f&amp;quot;Starting analysis for {pdf_file}...&amp;quot;) pages_text = extract_text_from_pdf(pdf_path) print(f&amp;quot;PDF extraction completed for {pdf_file}.&amp;quot;) print(f&amp;quot;Starting Markdown generation for {pdf_file}...&amp;quot;) markdown_content = generate_markdown(pages_text) print(f&amp;quot;Markdown generation completed for {pdf_file}.&amp;quot;) # 添加PDF文件名作为大标题 markdown_content = f&amp;quot;# {pdf_file}\\n\\n{markdown_content}&amp;quot; print(f&amp;quot;Saving Markdown content for {pdf_file}...&amp;quot;) save_markdown_file(markdown_content, output_path) print(f&amp;quot;Markdown content saved for {pdf_file}.&amp;quot;) # 重命名文件 new_name = rename_file(pdf_path, MARK_STRING) print(f&amp;quot;Renamed file to: {new_name}&amp;quot;) if name == \"main\": parser = argparse.ArgumentParser(description=\"Analyze PDFs and generate summaries.\") parser.add_argument(\"pdf_folder_path\", type=str, help=\"Path to the folder containing PDFs\") parser.add_argument(\"output_path\", type=str, help=\"Path to the output Markdown file\") parser.add_argument(\"api_key\", type=str, help=\"OpenAI API key\") args = parser.parse_args() main(args.pdf_folder_path, args.output_path, args.api_key)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;How to use&lt;/p&gt;&lt;p&gt;python pdf_to_markdown.py \"C:\\Users\\Administrator\\Desktop\\blackhat-conferences-2024\\BlackHat ASIA 2024-Slides\" &lt;a href=\"http://output.md/\"&gt;output.md&lt;/a&gt; \"your_openai_api_key\"&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;h2&gt;Analyze local images&lt;/h2&gt;&lt;pre&gt;&lt;code class=\"language-JavaScript\"&gt;import pytesseract from PIL import Image import openai import argparse 设置Tesseract可执行文件路径（如果需要） pytesseract.pytesseract.tesseract_cmd = r'C:\\Program Files (x86)\\Tesseract-OCR\\tesseract.exe' 初始系统消息 system_message = \"\"\" 你现在是一网络安全专家。 要求: 用中文回复 \"\"\" 使用OCR解析图片中的文本 def extract_text_from_image(image_path): image = Image.open(image_path) text = pytesseract.image_to_string(image) return text 使用OpenAI API生成回复 def generate_response_with_openai(text, api_key): openai.api_key = api_key messages = [ {\"role\": \"system\", \"content\": system_message}, {\"role\": \"user\", \"content\": text} ] response = openai.ChatCompletion.create( model=&amp;quot;gpt-4.0-o&amp;quot;, messages=messages ) return response.choices[0].message.content.strip() 主函数 def main(image_path, api_key): # 提取图片中的文本 text = extract_text_from_image(image_path) print(\"OCR解析的文本：\") print(text) # 使用OpenAI API生成回复 response = generate_response_with_openai(text, api_key) print(&amp;quot;OpenAI生成的回复：&amp;quot;) print(response) if name == \"main\": parser = argparse.ArgumentParser(description=\"Extract text from image using OCR and generate response using OpenAI API.\") parser.add_argument(\"image_path\", type=str, help=\"Path to the image file\") parser.add_argument(\"api_key\", type=str, help=\"OpenAI API key\") args = parser.parse_args() main(args.image_path, args.api_key)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;python image_to_text.py \"C:\\Users\\Administrator\\Desktop\\1.jpg\" \"your_openai_api_key”&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;h2&gt;Analyze local ppt&lt;/h2&gt;&lt;pre&gt;&lt;code class=\"language-JavaScript\"&gt;from pptx import Presentation import openai import argparse 初始系统消息 system_message = \"\"\" 你是一名信息安全专家 帮我分析我提供的ppt中的内容并分别生成标题和 摘要 \"\"\" 读取PPT文件并提取文本内容 def extract_text_from_ppt(ppt_path): prs = Presentation(ppt_path) slides_text = [] for slide in prs.slides: slide_text = &amp;quot;&amp;quot; for shape in slide.shapes: if hasattr(shape, &amp;quot;text&amp;quot;): slide_text += shape.text + &amp;quot; &amp;quot; slides_text.append(slide_text.strip()) return slides_text 使用OpenAI API生成标题和摘要 def generate_title_and_summary_with_openai(text, api_key): openai.api_key = api_key messages = [ {\"role\": \"system\", \"content\": system_message}, {\"role\": \"user\", \"content\": text} ] response = openai.ChatCompletion.create( model=&amp;quot;gpt-4-o&amp;quot;, messages=messages ) result = response.choices[0].message.content.strip() return result 生成Markdown内容 def generate_markdown(slides_text, api_key): markdown_content = \"\" for i, text in enumerate(slides_text): # 生成标题和摘要 result = generate_title_and_summary_with_openai(text, api_key) lines = result.split(&amp;quot;\\n&amp;quot;) if lines: title = lines[0].strip() summary = &amp;quot;\\n&amp;quot;.join(lines[1:]).strip() # 生成Markdown内容 markdown_content += f&amp;quot;## {title}\\n\\n&amp;quot; markdown_content += f&amp;quot;{summary}\\n\\n&amp;quot; return markdown_content 保存Markdown文件 def save_markdown_file(markdown_content, output_path): with open(output_path, \"w\", encoding=\"utf-8\") as md_file: md_file.write(markdown_content) 主函数 def main(ppt_path, output_path, api_key): slides_text = extract_text_from_ppt(ppt_path) markdown_content = generate_markdown(slides_text, api_key) save_markdown_file(markdown_content, output_path) if name == \"main\": parser = argparse.ArgumentParser(description=\"Analyze PPT content and generate summaries using OpenAI API.\") parser.add_argument(\"ppt_path\", type=str, help=\"Path to the PPT file\") parser.add_argument(\"output_path\", type=str, help=\"Path to the output Markdown file\") parser.add_argument(\"api_key\", type=str, help=\"OpenAI API key\") args = parser.parse_args() main(args.ppt_path, args.output_path, args.api_key)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;","contentHash":"sha256:ac03f73aad85826464097bcf2bdb2d5bc01be749c5700d0bb196408ae9577338","authorName":"I0veD","authorUrl":"https://zyvop.com/author/i0ved","authorSameAs":["https://www.cdxiaodong.life/","https://github.com/cdxiaodong","https://www.linkedin.com/in/%E6%A0%8B-%E7%A8%8B-167b89391/"],"category":null,"tags":[],"audience":"Software engineers and developers building applications with software development","tone":"Professional, cyber security researcher perspective","readingTimeMinutes":4,"wordCount":822,"faqs":null,"primaryTopic":null,"publishedAt":"2026-08-12T05:14:31.072Z","updatedAt":"2026-08-24T08:50:00.168Z","canonicalUrl":"https://www.cdxiaodong.life/article/Multiple_AI_tool_script"}