机器之心编译

对很多人来说,将 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 pytesseractdef single_pic_proc(image_file):image = np.array(Image.open(image_file).convert('RGB'))result, image_framed = ocr(image)return result,image_framedimage_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 textfilename = pathlib.Path(image_file).nameoutput_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 cvoutput_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 工具来处理一些文本内容,这比依赖外部软件来转录文档要好的多。

原文链接:https://towardsdatascience.com/faster-notes-with-python-and-deep-learning-b713bbb3c186

推荐阅读:

入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python | 实战项目 |学Python就是这条捷径

量化: 定投基金到底能赚多少钱?  | 我用Python对去年800只基金的数据分析

干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析|   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记灯谜答题王 |用Python做个海量小姐姐素描图碟中谍这么火,我用机器学习做个迷你推荐系统电影

趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!

AI: 会做诗的机器人给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影

小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

  • 1).卧槽!Pdf转Word用Python轻松搞定!

  • 2).学Python真香!我用100行代码做了个网站,帮人PS旅行图片,赚个鸡腿吃

  • 3).首播过亿,火爆全网,我分析了《乘风破浪的姐姐》,发现了这些秘密

  • 4).80行代码!用Python做一个哆来A梦分身

  • 5).你必须掌握的20个python代码,短小精悍,用处无穷

  • 6).30个Python奇淫技巧集

  • 7).我总结的80页《菜鸟学Python精选干货.pdf》,都是干货

  • 8).再见Python!我要学Go了!2500字深度分析

  • 9).发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片

点阅读原文,领AI全套资料!

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

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

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

  2. 太方便了,告别「复制+粘贴」,Python 轻松实现 PDF 转文本模式~

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

  3. layui关闭表格编辑_告别复制粘贴,表格再多也能快速合并!

    1 快速合并多个表格 (点击播放键即可播放) ◉ 推荐星级:⭐️⭐️⭐️⭐️⭐️ ◉ 推荐理由:告别复制粘贴,再多表格也能快速合并! 工作中我们经常会遇到将多个表格合并在一起的情况,数据少的时候我们还 ...

  4. vue 动态变量名_【告别复制粘贴】动态模板生成小技巧

    ? 这是第 75篇不掺水的原创,想要了解更多,请戳上方蓝色字体:政采云前端团队关注我们吧- 本文首发于政采云前端团队博客:告别复制粘贴:动态模板生成小技巧 https://www.zoo.team/a ...

  5. 告别复制粘贴,Python 实现 PDF 转文本

    机器之心编译 对很多人来说,将 PDF 转换为可编辑的文本是个刚需,却苦于没有简单方法.在本文介绍的项目中,来自 K1 Digital 的高级机器学习工程师 Lucas Soares,尝试使用 OCR ...

  6. 还在烦恼Word怎么转PPT?教你一种方法告别复制粘贴

    做PPT前,我们都会先在Word上完成一个大纲,然后做PPT看看对不对,不知道大家是怎么把Word里的内容转到PPT上的?我猜很多朋友会说是复制粘贴!实际上,还有有更简单更快捷的方法!今日小编就教大家 ...

  7. python怎么读取pdf为文本_轻松用Python批量提取PDF文本内容,这个小技巧告诉你!...

    轻松用Python批量提取PDF文本内容,这个小技巧告诉你!-1.jpg (22.73 KB, 下载次数: 0) 2018-9-7 08:33 上传 本文为你展示,如何用Python把许多PDF文件的 ...

  8. Python轻松实现PDF格式转换(附详细源码)

    公众号后台回复"图书",了解更多号主新书内容 作者:J哥 来源:菜J学Python 项目背景 网上PDF转换工具眼花缭乱,选择困难症,有些甚至还收费: 直接以其他格式打开PDF效果 ...

  9. 【vim】系统剪切板、vim寄存器之间的复制粘贴操作命令?系统剪切板中的内容复制粘贴到命令行?vim文本中复制粘贴到命令行

    一.系统剪切板和文本内容的复制粘贴 1.1 从系统剪切板复制粘贴到文本中 需要操作3次: 分别是英文双引号.一个加号或梅花号,最后是一个p 也即"+p 或者直接使用组合键[Shift + i ...

  10. python读取word内容复制粘贴,Python读取word文本操作详解

    本文研究的主要问题时Python读取word文本操作,分享了相关概念和实现代码,具体如下. 一,docx模块 Python可以利用python-docx模块处理word文档,处理方式是面向对象的.也就 ...

最新文章

  1. 项目总结---- imageLoder 的2个Bug解决方法、1.9.4如何选择性删除disk缓存和其它一些错误。...
  2. 最强 JDK15 安装与讲解,有点想升级,终于要废弃偏向锁了!
  3. 如何修改远程登录端口号?
  4. golang 结构体和数据库表字段 反射自动映射 sqlmapper库 简介
  5. cclink 和发那科机器人_发那科 iB系列 | 机器人地装行走轴三大升级介绍
  6. 数据结构---排序算法的总结
  7. sumo的简单应用_sumo快速运行简单仿真实例详细教程
  8. OWIN之中间件用法示例
  9. .Net MVC 自定义Action类型,XmlAction,ImageAction等
  10. Flutter之路由系列之Navigator简析
  11. Atitit 计算机通信技术概要 目录 1. OSI参考模型将整个协议垂直地分为7个层次 : 1 1.1. 通信类别 2 2. 传输方式 计算机通信可分为直接式和间接式两种。 2 2.1. 1)直
  12. 修改SRVINSTW支持sys文件
  13. 2021西工大计算机专硕,计算机专硕2021考研形势分析,考研小白戳
  14. 凭借这份diao炸天的资料,狂刷三遍成功从外包进入了字节跳动!
  15. Android手动创建活动并注册AndroidManifest.xml
  16. php复杂海报合成,才发现 | 每一步都不该错过的合成海报教程
  17. 扩展期权定价模型到二元期权定价
  18. 64位处理器_为什么苹果A处理器领先安卓2年?从什么时候开始领先的?有何依据...
  19. sql server2000安装quot;挂起quot;的解决方法
  20. HTML的id选择器类选择器

热门文章

  1. 基于javacv的视频转码(升级版)
  2. C语言运算优先级记忆口诀
  3. 微信小程序上线审核流程
  4. Cortex-M3 (NXP LPC1788)之启动代码分析
  5. LocalSolver快速入门指南(连载四十一) -车辆路径调度问题建模指导
  6. froala editor导出html,Froala editor 使用
  7. 列线图计算每个患者得分,并生成Roc曲线。
  8. matlab 打不开 slx,matlab2014a打不开仿真参数设置对话框怎么办
  9. iOS打包ipa安装包的流程
  10. 浅析人脸识别算法及其应用