如何使用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 imgimage_to_docx函数中的图片读取逻辑,替换为预处理后的图片:img = preprocess_image(image_path) - 针对特定语言文本,识别时指定语言参数(如中文:
lang='chi_sim'):
注意:需提前安装对应语言的Tesseract语言包。text = pytesseract.image_to_string(img, lang='chi_sim')
完整工作流程
- 运行
batch_image_to_docx函数,批量将图片转为DOCX文件 - 在Word中打开DOCX,手动修正识别不准确的文本
- 使用已有的DOCX转PDF代码,将编辑后的文件导出为PDF
内容的提问来源于stack exchange,提问作者Nitin Kumar
相关产品推荐
相关产品推荐

