首页 > 其他分享 >PDF文档里的图片提取转文字

PDF文档里的图片提取转文字

时间:2024-05-21 10:57:00浏览次数:16  
标签:OCR 提取 文档 PDF output folder path page

最近需要处理一堆PDF文档,这堆PDF文档中有图片,并且需要提取出pdf中的图片来识别图片中的文字,老规矩先上代码:

import os
import fitz
import pytesseract
from PIL import Image

# 设置Tesseract OCR引擎的路径(根据你的系统环境修改)  
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files (x86)\Tesseract-OCR\tesseract.exe'  
  
# 定义函数ocr_first_page_of_pdf,用于对PDF的第一页进行OCR识别  
def ocr_first_page_of_pdf(pdf_path, output_image_path, zoom):  
    try:  
        # 尝试打开PDF文件  
        doc = fitz.open(pdf_path)  
        # 加载PDF的第一页  
        page = doc.load_page(0)  
        # 创建一个缩放矩阵,用于缩放页面大小  
        matrix = fitz.Matrix(zoom, zoom)  
        # 根据缩放矩阵获取页面的像素映射(图像)  
        pix = page.get_pixmap(matrix=matrix)  
        # 将像素映射保存为PNG图片文件  
        pix.save(output_image_path)  
        # 使用PIL库打开PNG图片文件  
        image = Image.open(output_image_path)  
        # 使用Tesseract OCR引擎对图片进行OCR识别,并指定使用简体中文(chi_sim)  
        text = pytesseract.image_to_string(image, lang='chi_sim')  
        # 关闭PDF文档  
        doc.close()  
        # 关闭PIL图像对象(尽管在Python中通常不需要显式关闭,但这里为了明确性)  
        image.close()  
        # 返回识别到的文本  
        return text  
    except Exception as e:  
        # 如果在OCR过程中发生任何异常,打印错误信息并返回None  
        print(f"Error processing {pdf_path}: {e}")  
        return None  
  
# 定义函数process_pdfs_in_folder,用于处理指定文件夹中的PDF文件  
def process_pdfs_in_folder(folder_path, output_folder):  
    # 如果输出文件夹不存在,则创建它  
    if not os.path.exists(output_folder):  
        os.makedirs(output_folder)  
    # 遍历指定文件夹中的所有文件  
    for filename in os.listdir(folder_path):  
        # 如果文件是以.pdf结尾的  
        if filename.endswith('.pdf'):  
            # 构建完整的文件路径  
            file_path = os.path.join(folder_path, filename)  
            print(f"正在处理文件: {file_path}")  # 打印正在处理的文件路径  
            try:  
                # 提取文件名(不包括扩展名)作为基础名  
                base_name, _ = os.path.splitext(filename)  
                # 构建输出图片文件的路径  
                output_image_path = os.path.join(output_folder, f"{base_name}_first_page.png")  
                # 对PDF文件的第一页进行OCR识别  
                text = ocr_first_page_of_pdf(file_path, output_image_path, zoom=2.0)  
                if text is not None:  
                    # 打印识别到的文本(注意:下面的两行代码已被注释掉)  
                    # no_whitespace = re.sub(r"\s", "", text)  # 移除所有空白字符(包括空格、制表符等)  
                    # no_newlines_tabs = re.sub(r"[\n\t]", "", no_whitespace)  # 移除换行符和制表符  
                    print(text)  # 打印识别到的文本(包含所有字符)  
            except Exception as e:  
                # 如果在处理过程中发生任何异常,打印错误信息  
                print(f"处理文件 {file_path} 时发生错误: {e}")  
  
# 调用process_pdfs_in_folder函数,处理指定文件夹中的PDF文件  
process_pdfs_in_folder(r'C:\Users\your_folder_name', r'output')  # 请将your_folder_name替换为实际的文件夹名

有几点需要注意的地方:
首先我的代码是运行在windows环境上的,所以在前面要声明pytesseract库,即pytesseract库需要知道tesseract.exe的路径以便进行OCR识别
其次在项目下必须要有一个名为output的文件夹用来存放映射后的PDF文件中的图片
最后page = doc.load_page(0)这里的doc.load_page中的参数是对PDF文档中的指定页面进行操作,0是指第一页
2024年Tesseract中文库下载最新安装包+OCR中文语言包

标签:OCR,提取,文档,PDF,output,folder,path,page
From: https://www.cnblogs.com/zjw-lxj/p/18203514

相关文章

  • 如何防止内部文档外泄,Ftrans文档安全外发系统了解一下!
    文档安全外发系统是一种用于保护企业或组织内部敏感信息不被未授权外泄的技术解决方案,比如内部文件、报告、数据等信息发送给外部的个人或组织,这个过程需要谨慎处理,确保信息安全。以下是一些常见的文档外发方式:电子邮件:通过电子邮件附件的形式发送文档是最常见的外发方式之一。......
  • Spring Boot —— 集成文档工具
    Swagger->SpringDoc官网地址:https://springdoc.org/是基于OpenAPI3.0规范构建的集成SwaggerUI和ReDoc文档生成工具,可自动注入OpenAPI规范的JSON描述文件,支持OAUTH2、JWT等认证机制。推荐SpringBoot2.4及以上版本使用springdoc-openapi-ui集成Swagger3.x,SpringBoo......
  • JS之打印导出PDF
    我们可以直接调用浏览器的打印功能来实现。1.直接打印直接调用浏览器的打印功能,打印整个页面functionpreview(){window.print();}2.打印指定区域通过开始标记、结束标记来打印,打印局部页面<!--startprint--><div>打印的内容</div><!--end......
  • 如何将pdf转成cad?试试这三个方法
    掌握将pdf转cad的方法可以帮助我们修改CAD中的内容。你知道pdf如何转cad吗?接下来分享三种常用的CAD转换方法,看完你就知道如何实现pdf转cad。方法一、使用AutoCAD软件自带的PDF导入工具AutoCAD是一款专业的CAD设计软件,可以将PDF文件转换为DWG或DXF格式。如果你已经安装了AutoCAD......
  • pdf 转 png
     参考:https://blog.csdn.net/lai124793549/article/details/53392281      https://www.cnblogs.com/xiewei123/p/10902578.html百度云链接:https://pan.baidu.com/s/1oiMEZl9xJWVAzf_JZaw3Ww 提取码:8dna 方法1:添加引用 O2S.Components.PDFRender4NET ......
  • 如何免费将PDF转成HTML网页?
    HTML是网页的标准格式,具有良好的可读性和可访问性以及更强的可编辑性。与PDF相比,HTML文档更容易进行修改和更新。将PDF转换为HTML后,文档内容可以在各种浏览器和设备上自由查看,为用户提供更便捷的访问体验。另外将PDF转成HTML网页后也有助于提升信息的传播和分享效率,由于HTML文档......
  • 计量管理使用文档
    计量管理使用文档添加计量要求​​添加计量台账选择计量要求填写相关信息会提前一个月发送消息给计量状态为正常的责任人。​​其他功能:暂停计量可以修改计量状态;再计量可以添加一次计量记录;台账历史记录,可以查看所有计量记录‍​​......
  • 计量管理使用文档
    计量管理使用文档添加计量要求​​添加计量台账选择计量要求填写相关信息会提前一个月发送消息给计量状态为正常的责任人。​​其他功能:暂停计量可以修改计量状态;再计量可以添加一次计量记录;台账历史记录,可以查看所有计量记录‍​​......
  • 计量管理使用文档
    计量管理使用文档添加计量要求​​添加计量台账选择计量要求填写相关信息会提前一个月发送消息给计量状态为正常的责任人。​​其他功能:暂停计量可以修改计量状态;再计量可以添加一次计量记录;台账历史记录,可以查看所有计量记录‍​​......
  • 如何从多个文件夹里各提取相应数量的文件放一起到新文件夹中形成多文件夹组合
    首先,需要用到的这个工具:度娘网盘提取码:qwu2蓝奏云提取码:2r1z 首先,说明一下情况文件夹:1、2、3里面分别放置了各100张动物的图片,模拟实际情况的各种文件操作:这里演示的是从3个文件夹里各取2张图片实际情况中,可以从多个文件夹里进行多个文件提取进行放置如:可以从2个文件......