DeepSeek技术解析:Python代码实现PDF与图片内容识别

是的,DeepSeek 识别 PDF 和图片内容的 Python 代码可以开源!虽然 DeepSeek 本身并不直接支持 OCR 功能,但我们可以通过结合开源工具(如 PaddleOCR、Tesseract 和 PyMuPDF)实现类似的功能。以下是完整的 Python 代码示例,您可以直接使用或根据需求进行修改。


1. 实现功能

  • 文本型 PDF:直接提取 PDF 中的文本层。
  • 图像型 PDF 或图片:使用 OCR 工具(如 PaddleOCR)提取文字。
  • 调用 DeepSeek 模型:将提取的文本传递给 DeepSeek 模型进行处理。

  • 2. 安装依赖

    在运行代码之前,请确保安装以下依赖:

    pip install paddleocr fitz requests
    

    3. 完整代码示例

    以下是一个开源的 Python 代码示例,展示如何实现 PDF 和图片内容的识别,并调用 DeepSeek 模型进行处理:

    import fitz  # PyMuPDF
    from paddleocr import PaddleOCR
    import requests
    
    # 初始化 PaddleOCR
    ocr = PaddleOCR(use_angle_cls=True, lang="ch")
    
    def extract_text_from_pdf(pdf_path):
        """
        从 PDF 文件中提取文本内容。
        - 对于文本型 PDF,直接提取文字。
        - 对于图像型 PDF,使用 OCR 提取文字。
        """
        # 打开 PDF 文件
        pdf_document = fitz.open(pdf_path)
        text = ""
    
        # 遍历每一页
        for page_num in range(len(pdf_document)):
            page = pdf_document.load_page(page_num)
            page_text = page.get_text()
    
            if page_text.strip():  # 如果是文本型 PDF
                text += page_text
            else:  # 如果是图像型 PDF,使用 OCR
                pix = page.get_pixmap()
                image_path = f"page_{page_num + 1}.png"
                pix.save(image_path)
                result = ocr.ocr(image_path, cls=True)
                page_text = "\n".join([line[1][0] for line in result[0]])
                text += page_text
    
        return text
    
    def extract_text_from_image(image_path):
        """
        从图片中提取文本内容。
        """
        # 调用 PaddleOCR 识别图片中的文字
        result = ocr.ocr(image_path, cls=True)
        text = "\n".join([line[1][0] for line in result[0]])
        return text
    
    def call_deepseek_model(text, model_size="7B"):
        """
        调用 DeepSeek 模型处理文本。
        """
        url = "http://localhost:11434/api/generate"  # ollama 的 API 地址
        payload = {
            "model": f"deepseek-r1:{model_size}",
            "prompt": f"请处理以下文本:{text}",
            "stream": False
        }
        response = requests.post(url, json=payload)
        return response.json()["response"]
    
    def process_file(file_path):
        """
        处理文件(PDF 或图片),提取文本并调用 DeepSeek 模型。
        """
        if file_path.endswith(".pdf"):
            text = extract_text_from_pdf(file_path)
        elif file_path.endswith((".jpg", ".png", ".jpeg")):
            text = extract_text_from_image(file_path)
        else:
            raise ValueError("不支持的文件格式")
    
        # 调用 DeepSeek 模型处理文本
        result = call_deepseek_model(text, model_size="13B")
        return result
    
    # 示例:处理文件
    file_path = "example.pdf"  # 或 "example.jpg"
    result = process_file(file_path)
    print("提取的文本:", result)
    

    4. 运行代码

    1. 将上述代码保存为 pdf_image_to_text.py
    2. 运行代码:
      python pdf_image_to_text.py
      

    5. 代码说明

  • PDF 解析:使用 PyMuPDF 提取文本型 PDF 的文字,对于图像型 PDF,使用 PaddleOCR 提取文字。
  • 图片识别:使用 PaddleOCR 提取图片中的文字。
  • DeepSeek 调用:将提取的文本传递给 DeepSeek 模型进行处理。

  • 6. 开源许可

    此代码基于开源工具(如 PaddleOCR、PyMuPDF)实现,您可以自由使用、修改和分发。如果您希望将此代码用于商业用途,请确保遵守相关开源工具的许可协议。


    7. 总结

    通过结合开源工具,我们可以实现 PDF 和图片内容的识别,并将提取的文本传递给 DeepSeek 模型进行处理。此代码完全开源,您可以根据需求进行修改和扩展。

    作者:Leon_Jinhai_Sun

    物联沃分享整理
    物联沃-IOTWORD物联网 » DeepSeek技术解析:Python代码实现PDF与图片内容识别

    发表回复