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

%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 幻灯片,图右为转录后的输出文本,转录后的准确率非常高。

在这里插入图片描述

文本识别输出如下:

先自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以扫码领取!

img

最后

很多程序员,整天沉浸在业务代码的 CRUD 中,业务中没有大量数据做并发,缺少实战经验,对并发仅仅停留在了解,做不到精通,所以总是与大厂擦肩而过。

我把私藏的这套并发体系的笔记和思维脑图分享出来,理论知识与项目实战的结合,我觉得只要你肯花时间用心学完这些,一定可以快速掌握并发编程。

不管是查缺补漏还是深度学习都能有非常不错的成效,需要的话记得帮忙点个赞支持一下

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~
是与大厂擦肩而过。

我把私藏的这套并发体系的笔记和思维脑图分享出来,理论知识与项目实战的结合,我觉得只要你肯花时间用心学完这些,一定可以快速掌握并发编程。

不管是查缺补漏还是深度学习都能有非常不错的成效,需要的话记得帮忙点个赞支持一下

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~
需要更多Java资料的小伙伴可以帮忙点赞+关注,点击传送门,即可免费领取!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值