You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python将PNG/JPG图片转换为DOCX文件?

解决方案:批量将纯文本图片(JPG/PNG)转为可编辑DOCX再生成PDF

需求说明

  • 批量处理仅含文本的JPG/PNG文件,先转换为可在Word中手动编辑的DOCX格式,再导出为PDF
  • 此前使用第三方API进行文本识别准确率不足,需本地实现更可靠的OCR方案

现有DOCX转PDF代码

已具备Python实现的DOCX转PDF功能,代码如下:

from docx2pdf import convert

input = 'INPUT_FILE_NAME.docx'
output = 'OUTPUT_FILE_NAME.pdf'
convert(input)
convert(input, output)
convert("Output")

图片转DOCX的实现方案

核心思路是通过本地OCR识别图片文本,再将识别结果写入DOCX文件。推荐使用pytesseract(Tesseract OCR的Python封装)结合python-docx库,具体步骤如下:

1. 安装依赖

先安装必要的Python库和Tesseract OCR引擎:

  • 安装Python库:
    pip install pytesseract python-docx pillow
    
  • 安装Tesseract OCR引擎:
    • Windows:从官方渠道下载安装包,安装后需将Tesseract执行文件路径配置到环境变量,或在代码中直接指定路径
    • macOS:执行brew install tesseract
    • Linux:执行sudo apt install tesseract-ocr

2. 图片转DOCX代码实现

import pytesseract
from PIL import Image
from docx import Document
import os

# 可选:若Tesseract未加入环境变量,手动指定执行路径
# pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

def image_to_docx(image_path, output_docx_path):
    # 打开图片
    img = Image.open(image_path)
    # OCR识别图片文本
    text = pytesseract.image_to_string(img)
    # 创建DOCX文档并写入文本
    doc = Document()
    doc.add_paragraph(text)
    # 保存DOCX文件
    doc.save(output_docx_path)

def batch_image_to_docx(input_dir, output_dir):
    # 确保输出目录存在
    os.makedirs(output_dir, exist_ok=True)
    # 遍历目录下所有图片文件
    for filename in os.listdir(input_dir):
        if filename.lower().endswith(('.png', '.jpg', '.jpeg')):
            image_path = os.path.join(input_dir, filename)
            docx_filename = os.path.splitext(filename)[0] + '.docx'
            output_docx_path = os.path.join(output_dir, docx_filename)
            image_to_docx(image_path, output_docx_path)
            print(f"转换完成:{filename} -> {docx_filename}")

# 使用示例
input_directory = "你的图片存放目录"
output_directory = "DOCX文件输出目录"
batch_image_to_docx(input_directory, output_directory)

3. 提升识别准确率的技巧

  • 对图片进行预处理(灰度化、降噪、对比度调整):
    from PIL import ImageOps
    
    def preprocess_image(image_path):
        img = Image.open(image_path)
        # 转为灰度图
        img = ImageOps.grayscale(img)
        # 自动调整对比度
        img = ImageOps.autocontrast(img)
        return img
    
    修改image_to_docx函数中的图片读取逻辑,替换为预处理后的图片:
    img = preprocess_image(image_path)
    
  • 针对特定语言文本,识别时指定语言参数(如中文:lang='chi_sim'):
    text = pytesseract.image_to_string(img, lang='chi_sim')
    
    注意:需提前安装对应语言的Tesseract语言包。

完整工作流程

  1. 运行batch_image_to_docx函数,批量将图片转为DOCX文件
  2. 在Word中打开DOCX,手动修正识别不准确的文本
  3. 使用已有的DOCX转PDF代码,将编辑后的文件导出为PDF

内容的提问来源于stack exchange,提问作者Nitin Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 18:05:25