太方便了!告别复制粘贴,Python 轻松实现 PDF 转文本!

高级机器学习工程师LucasSoares分享了一种使用OCR技术自动转录PDF幻灯片的方法,通过将PDF转换为图像,利用深度学习的OCR工具进行文本识别,以提高效率并减少手动工作。
摘要由CSDN通过智能技术生成

对很多人来说,将 PDF 转换为可编辑的文本是个刚需,却苦于没有简单方法。在本文介绍的项目中,来自 K1 Digital 的高级机器学习工程师 Lucas Soares,尝试使用 OCR(光学字符识别)自动转录 pdf 幻灯片,转录效果还不错。

传统的讲座通常伴随着一组 pdf 幻灯片。一般来说,想要对此类讲座做笔记,需要从 pdf 复制、粘贴很多内容。

最近,来自 K1 Digital 的高级机器学习工程师 Lucas Soares 一直在尝试通过使用 OCR(光学字符识别)自动转录 pdf 幻灯片,以便直接在 markdown 文件中操作它们的内容,从而避免手动复制和粘贴 pdf 内容,实现这一过程的自动化。

左为项目作者 Lucas Soares。

项目地址:https://github.com/EnkrateiaLucca/ocr_for_transcribing_pdf_slides

为什么不使用传统的 pdf 转文本工具呢?

Lucas Soares 发现传统工具往往会带来更多的问题,需要花时间解决。他曾经尝试使用传统的 Python 软件包,但是遇到了很多问题(例如必须使用复杂的正则表达式模式解析最终输出等),因此决定尝试使用目标检测和 OCR 来解决。

基本过程可分为以下步骤:

将 pdf 转换为图片;

检测和识别图像中的文本;

展示示例输出。

基于深度学习的 OCR 将 pdf 转录为文本

将 pdf 转换为图像

Soares 使用的 pdf 幻灯片来自于 David Silver 的增强学习(参见以下 pdf 幻灯片地址)。使用「pdf2image」包将每张幻灯片转换为 png 图像格式。

pdf 幻灯片示例。地址:https://www.davidsilver.uk/wp-content/uploads/2020/03/intro_RL.pdf

代码如下:

from pdf2image import convert_from_path  
from pdf2image.exceptions import (  
 PDFInfoNotInstalledError,  
 PDFPageCountError,  
 PDFSyntaxError  
)  
  
pdf_path = "path/to/file/intro_RL_Lecture1.pdf"  
images = convert_from_path(pdf_path)  
for i, image in enumerate(images):  
    fname = "image" + str(i) + ".png"  
    image.save(fname, "PNG")

经过处理后,所有的 pdf 幻灯片都转换成 png 格式的图像:

检测和识别图像中的文本

为了检测和识别 png 图像中的文本,Soares 使用 ocr.pytorch 库中的文本检测器。按照说明下载模型并将模型保存在 checkpoints 文件夹中。

ocr.pytorch 库地址:https://github.com/courao/ocr.pytorch

代码如下:

# adapted from this source: https://github.com/courao/ocr.pytorch  
%load_ext autoreload  
%autoreload 2  
import os  
from ocr import ocr  
import time  
import shutil  
import numpy as np  
import pathlib  
from PIL import Image  
from glob import glob  
import matplotlib.pyplot as plt  
import seaborn as sns  
sns.set()  
import pytesseract  
  
def single_pic_proc(image_file):  
    image = np.array(Image.open(image_file).convert('RGB'))  
    result, image_framed = ocr(image)  
    return result,image_framed  
  
image_files = glob('./input_images/*.*')  
result_dir = './output_images_with_boxes/'  
  
# If the output folder exists we will remove it and redo it.  
if os.path.exists(result_dir):  
    shutil.rmtree(result_dir)  
os.mkdir(result_dir)  
  
for image_file in sorted(image_files):  
    result, image_framed = single_pic_proc(image_file) # detecting and recognizing the text  
    filename = pathlib.Path(image_file).name  
    output_file = os.path.join(result_dir, image_file.split('/')[-1])  
    txt_file = os.path.join(result_dir, image_file.split('/')[-1].split('.')[0]+'.txt')  
    txt_f = open(txt_file, 'w')  
    Image.fromarray(image_framed).save(output_file)  
    for key in result:  
        txt_f.write(result[key][1]+'\n')  
    txt_f.close()

设置输入和输出文件夹,接着遍历所有输入图像(转换后的 pdf 幻灯片),然后通过 single_pic_proc() 函数运行 OCR 模块中的检测和识别模型,最后将输出保存到输出文件夹。

其中检测继承(inherit)了 Pytorch CTPN 模型,识别继承了 Pytorch CRNN 模型,两者都存在于 OCR 模块中。

示例输出

代码如下:

import cv2 as cv  
  
output_dir = pathlib.Path("./output_images_with_boxes")  
  
# image = cv.imread(str(np.random.choice(list(output_dir.iterdir()),1)[0]))  
image = cv.imread(f"{output_dir}/image7.png")  
size_reshaped = (int(image.shape[1]),int(image.shape[0]))  
image = cv.resize(image, size_reshaped)  
cv.imshow("image", image)  
cv.waitKey(0)  
cv.destroyAllWindows()

下图左为原始 pdf 幻灯片,图右为转录后的输出文本,转录后的准确率非常高。

文本识别输出如下:

filename = f"{output_dir}/image7.txt"  
with open(filename, "r") as text:  
    for line in text.readlines():  
        print(line.strip("\n"))

通过上述方法,最终你可以得到一个非常强大的工具来转录各种文档,从检测和识别手写笔记到检测和识别照片中的随机文本。拥有自己的 OCR 工具来处理一些文本内容,这比依赖外部软件来转录文档要好的多。

以上就是“太方便了!告别复制粘贴,Python 轻松实现 PDF 转文本!”的全部内容,希望对你有所帮助。

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

二、Python必备开发工具

img

三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

五、Python练习题

检查学习结果。

img

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

img

最后祝大家天天进步!!

上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

  • 32
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值