%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工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

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

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

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

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

总结

在这里,由于面试中MySQL问的比较多,因此也就在此以MySQL为例为大家总结分享。但是你要学习的往往不止这一点,还有一些主流框架的使用,Spring源码的学习,Mybatis源码的学习等等都是需要掌握的,我也把这些知识点都整理起来了

面试真题

Spring源码笔记

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
链图片转存中…(img-8G7mApaL-1712573496837)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐