1. 将资料或知识库转换为文本
Ollama 需要文本作为输入,因此你需要将医药行业的资料(如 PDF、Word 或 Excel 文件)转换为纯文本。
提取文本
使用以下工具提取文本内容:
PDF 文件
python
from PyPDF2 import PdfReader
def extract_text_from_pdf(file_path):
reader = PdfReader(file_path)
text = ""
for page in reader.pages:
text += page.extract_text()
return text
pdf_text = extract_text_from_pdf("medical_data.pdf")
print(pdf_text)
Word 文件
python
from docx import Document
def extract_text_from_docx(file_path):
doc = Document(file_path)
text = ""
for paragraph in doc.paragraphs:
text += paragraph.text + "\n"
return text
docx_text = extract_text_from_docx("medical_data.docx")
print(docx_text)
Excel 文件
python
import pandas as pd
def extract_text_from_excel(file_path):
df = pd.read_excel(file_path)
text = df.to_string()
return text
excel_text = extract_text_from_excel("medical_data.xlsx")
print(excel_text)
2. 将文本发送给 Ollama
将提取的文本作为输入,通过 Ollama API 生成新的内容。
示例:生成总结
python
import requests
# 调用 Ollama API
url = "http://localhost:11434/api/generate"
payload = {
"model": "llama2",
"prompt": f"Summarize the following medical data:\n{extracted_text}",
"stream": False,
"max_tokens": 500,
"temperature": 0.7
}
response = requests.post(url, json=payload)
if response.status_code == 200:
result = response.json()
generated_text = result["response"]
print("Generated Text:", generated_text)
else:
print("Error:", response.status_code, response.text)
3. 将生成的文本保存为 PDF 或 Word
将 Ollama 生成的文本保存为 PDF 或 Word 文档。
保存为 Word 文档
python
from docx import Document
def save_text_to_docx(text, output_path):
doc = Document()
doc.add_paragraph(text)
doc.save(output_path)
save_text_to_docx(generated_text, "medical_summary.docx")
保存为 PDF 文档
使用 reportlab
库将文本保存为 PDF:
bash
pip install reportlab
python
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
def save_text_to_pdf(text, output_path):
c = canvas.Canvas(output_path, pagesize=letter)
width, height = letter
lines = text.split("\n")
y = height - 40 # 初始 Y 坐标
for line in lines:
c.drawString(40, y, line)
y -= 12 # 每行向下移动 12 像素
if y < 40: # 如果到达页面底部,创建新页面
c.showPage()
y = height - 40
c.save()
save_text_to_pdf(generated_text, "medical_summary.pdf")
4. 整合流程
将以上步骤整合为一个完整的流程:
- 上传医药行业的资料(PDF、Word 或 Excel 文件)。
- 提取文件内容为文本。
- 将文本发送给 Ollama,生成新的内容。
- 将生成的内容保存为 PDF 或 Word 文档。
5. 示例代码
以下是完整的 Python 示例代码:
python
from PyPDF2 import PdfReader
from docx import Document
import requests
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
# 提取 PDF 文件内容
def extract_text_from_pdf(file_path):
reader = PdfReader(file_path)
text = ""
for page in reader.pages:
text += page.extract_text()
return text
# 调用 Ollama API 生成内容
def generate_text_with_ollama(prompt):
url = "http://localhost:11434/api/generate"
payload = {
"model": "llama2",
"prompt": prompt,
"stream": False,
"max_tokens": 500,
"temperature": 0.7
}
response = requests.post(url, json=payload)
if response.status_code == 200:
return response.json()["response"]
else:
raise Exception(f"Error: {response.status_code}, {response.text}")
# 保存为 Word 文档
def save_text_to_docx(text, output_path):
doc = Document()
doc.add_paragraph(text)
doc.save(output_path)
# 保存为 PDF 文档
def save_text_to_pdf(text, output_path):
c = canvas.Canvas(output_path, pagesize=letter)
width, height = letter
lines = text.split("\n")
y = height - 40
for line in lines:
c.drawString(40, y, line)
y -= 12
if y < 40:
c.showPage()
y = height - 40
c.save()
# 主流程
def main():
# 提取 PDF 文件内容
input_file = "medical_data.pdf"
extracted_text = extract_text_from_pdf(input_file)
# 生成总结
prompt = f"Summarize the following medical data:\n{extracted_text}"
generated_text = generate_text_with_ollama(prompt)
# 保存为 Word 文档
save_text_to_docx(generated_text, "medical_summary.docx")
# 保存为 PDF 文档
save_text_to_pdf(generated_text, "medical_summary.pdf")
if __name__ == "__main__":
main()
总结
通过以上步骤,你可以将医药行业的资料上传给 Ollama,生成新的内容,并将其保存为 PDF 或 Word 文档。