IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 太方便了,告别「复制+粘贴」,Python 轻松实现 PDF 转文本模式~ -> 正文阅读

[Python知识库]太方便了,告别「复制+粘贴」,Python 轻松实现 PDF 转文本模式~

前言:

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

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

接下来我们通过使用 OCR(光学字符识别)自动转录 pdf 幻灯片,以便直接在 markdown 文件中操作它们的内容,从而避免手动复制和粘贴 pdf 内容,实现这一过程的自动化。

为什么不使用传统的 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知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-02-19 01:06:38  更:2022-02-19 01:09:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:21:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码