医药行业知识库搭建

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. 整合流程

将以上步骤整合为一个完整的流程:

  1. 上传医药行业的资料(PDF、Word 或 Excel 文件)。
  2. 提取文件内容为文本。
  3. 将文本发送给 Ollama,生成新的内容。
  4. 将生成的内容保存为 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 文档。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容