批量加深 PDF 扫描文字的 Python 脚本

创建日期: 2025-08-08 16:59 | 作者: 风波 | 浏览次数: 18 | 分类: Python

来源:ChatGPT

安装依赖

pip install pdf2image pillow opencv-python
# pdf2image 需要 Poppler
apt install poppler-utils

Python 代码

import os
import cv2
from pdf2image import convert_from_path
from PIL import Image

# ======== 配置参数 ========
INPUT_FOLDER = "input_pdfs"   # 输入 PDF 文件夹
OUTPUT_FOLDER = "output_pdfs" # 输出 PDF 文件夹
DPI = 300                     # 转图片分辨率
ALPHA = 1.5                   # 对比度 (>1 增强, <1 降低)
BETA = -30                    # 亮度 (负数变暗, 正数变亮)
# ==========================

os.makedirs(OUTPUT_FOLDER, exist_ok=True)

def enhance_contrast_brightness(img, alpha, beta):
    """调整对比度(alpha)和亮度(beta)"""
    return cv2.convertScaleAbs(img, alpha=alpha, beta=beta)

def process_pdf(pdf_path, output_path):
    print(f"处理: {pdf_path}")
    pages = convert_from_path(pdf_path, dpi=DPI)
    enhanced_images = []

    for i, page in enumerate(pages):
        # 转为灰度
        img = cv2.cvtColor(cv2.cvtColor(
            cv2.imdecode(
                np.frombuffer(page.tobytes(), dtype=np.uint8),
                cv2.IMREAD_COLOR
            ), cv2.COLOR_BGR2GRAY
        ), cv2.COLOR_GRAY2BGR)

        # 调整对比度和亮度
        enhanced = enhance_contrast_brightness(img, ALPHA, BETA)

        # 转 PIL Image
        pil_img = Image.fromarray(cv2.cvtColor(enhanced, cv2.COLOR_BGR2RGB))
        enhanced_images.append(pil_img)

    # 保存 PDF
    enhanced_images[0].save(output_path, save_all=True, append_images=enhanced_images[1:], quality=100)
    print(f"已保存到: {output_path}")

def batch_process():
    for file in os.listdir(INPUT_FOLDER):
        if file.lower().endswith(".pdf"):
            input_path = os.path.join(INPUT_FOLDER, file)
            output_path = os.path.join(OUTPUT_FOLDER, file)
            process_pdf(input_path, output_path)

if __name__ == "__main__":
    import numpy as np
    batch_process()

处理文件

  1. 准备文件
input_pdfs/   # 把要处理的 PDF 放这里
output_pdfs/  # 处理后的 PDF 会生成到这里
  1. 修改脚本顶部的控制变量
  2. ALPHA(对比度,推荐 1.2 ~ 2.0)
  3. BETA(亮度,推荐 -50 ~ 50)

  4. 运行脚本

python enhance_pdf_text.py
  1. 运行效果
  2. ALPHA=1.5, BETA=-30 → 浅灰字会变接近黑色,背景更干净。
  3. ALPHA=2.0, BETA=-50 → 适合底色很浅的情况(会有“硬边”效果)。
18 浏览
12 爬虫
0 评论