GitHub 又一 OCR 神器面世!让你快速告别「复制 粘贴」!

来自机器之心
对很多人来说,将 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 2import osfrom ocr import ocrimport timeimport shutilimport numpy as npimport pathlibfrom PIL import Imagefrom glob import globimport matplotlib.pyplot as pltimport seaborn as snssns.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 工具来处理一些文本内容,这比依赖外部软件来转录文档要好的多。
原文链接:https://towardsdatascience.com/faster-notes-with-python-and-deep-learning-b713bbb3c186
(0)

相关推荐

  • 超好用的OCR离线文字识别TextSniper Mac最新版

    TextSniper Mac最新激活版是Mac电脑上的一款超级有用的OCR识别应用程序,TextSniper Mac版可以快速捕捉任何文本.使用它从演示文稿,培训,屏幕广播,图像,图片,网页,视频教程 ...

  • 扫描式SSD用于公式检测,代码已开源

    SSD是大家常见的目标检测器,在类似COCO的日常生活类物体检测,或者人脸.行人检测上都有应用,不过是否可以用于文本领域的检测呢? 今天跟大家介绍一篇新出的论文 ScanSSD: Scanning S ...

  • ABBYY FineReader PDF 15可以应用于工作的哪些方面

    PDF文档是我们日常工作中经常会用到的文档类型,因其具有不可编辑性,能在不同操作系统中保持良好兼容性,因此,在日常工作领域获得广泛使用. 那么,在工作中,该怎么用好PDF文档呢?借助专业的PDF管理软 ...

  • 使用abbyy,轻松地获取图像上的信息

    微信公众号包含了丰富的资讯,很多人都会定期阅读公众号,获取一些有价值的信息.而且更方便的是,遇到一些喜欢的内容,还可以复制或截图分享. 那么该如何才能将截图中的文本.图片等信息提取出来呢?这项工作交给 ...

  • 如何提高ABBYY FineReader PDF 15识别准确性

    ABBYY FineReader PDF 15是一款智能程度相当高的OCR文字识别软件,不仅能识别PDF文档,而且还能识别难度更高的图像文件. 说到图像文件,虽然使用扫描仪可以让我们获取到精确度更高的 ...

  • 霸榜 GitHub:又一款神器面世!

    不论你需要通用目标检测.实例分割.旋转框检测,还是行人检测.人脸检测.车辆检测等垂类算法: 不论是精度效果超强,还是超轻量适合在边缘部署的算法: 不论你是学术科研工作者,还是产业开发者: 不论你是刚入 ...

  • 飞浆 快到飞起!兼容所有主流操作系统,又一Java开发神器面世!

    OSC开源社区 昨天 自从飞桨框架2.0发布以来,一直有用户期待什么时候能够帮助Java用户更便捷高效完成他们的部署任务.在过去,我们往往需要自己部署一台Model Server来做这个事情.但是,无 ...

  • 阿里又一神器面世!炸了。。。

    纯洁的微笑 今天 前言 Spring Cloud Alibaba为分布式应用开发提供了一站式解决方案.它包含开发分布式应用程序所需的所有组件,可以轻松地使用Spring Cloud开发应用程序. 使用 ...

  • 火爆GitHub!这个图像分割神器开源了

    最近全球各大新势力造车公司简直不能再火!小编看着蹭蹭飙升的股价实在是眼红的不要不要的.而懂行的人都知道,以Telsa为首,各大公司都采用计算机视觉作为自动驾驶的技术底座,而其中正是通过图像分割技术,汽 ...

  • 炸锅了!又一 VSCode 神器面世!!!

    来自机器之心 在项目开发中,优秀的代码自动补全工具可以提升工作效率.然而,传统的 IDE 基本都使用搜索方法进行补全,在一些场景下效果不佳. 今日,GitHub 和 OpenAI 联合发布了新的 AI ...

  • GitHub 系统装机开源神器 ,可装多系统无需格式化U盘 !

    来源:开源最前线(ID:OpenSourceTop) 猿妹 编译 链接:fossmint.com/ventoy-open-source-bootable-usb-creator 早上中午晚上好,本师今 ...

  • 学用系列|苹果用户专享的拍照扫描OCR神器,限免进行中

    一直以来苹果用户对于自己受到的"歧视"愤愤不平,安卓手机上有免费好用的"白描",但苹果市场上就是要付费才能用,乔帮主和库克真的不懂免费对于用户的好.不过,8月2 ...

  • 亚马逊新神器面世:Echo Show 有望成为家庭互联网入口

    昨天,小雷报道了亚马逊 Echo 即将迎来带屏幕版本,今天,这个产品终于掀开面纱.这款新品名为 Echo Show,外观跟之前的 Echo 以及 Echo Look 的圆柱形完全不同,为三角锥形设计, ...

  • 百度又一神器面世!网友:牛逼炸了...

    Python爱好者社区 2021-10-31 00:49 自动驾驶.泛电商.互联网金融认证等这些全球最火爆的产业成功背后的关键技术是什么?各大厂攻城狮们年薪百万的秘籍又是什么?而我们又如何能在&quo ...