建设校园网站的意义,自己开发一个app多少钱,网上商城怎么做推广,北京网站设计制作关键词前言
文字型pdf提取#xff0c;python的库一大堆#xff0c;但是图片型pdf和pdf扫描件提取#xff0c;还是有些难度的#xff0c;我们需要用到OCR#xff08;光学字符识别#xff09;功能。
一、准备
1、安装OCR#xff08;光学字符识别#xff09;支持库
首先要安…前言
文字型pdf提取python的库一大堆但是图片型pdf和pdf扫描件提取还是有些难度的我们需要用到OCR光学字符识别功能。
一、准备
1、安装OCR光学字符识别支持库
首先要安装pytesseract和Tesserac OCRTesseract OCR是一种广泛使用的OCR工具它可以用于从图像中提取文字。Tesseract OCR具有较高的识别精度和速度同时支持多种语言。在Python中可以使用pytesseract库来调用Tesseract OCR。
1安装pytesseract库
pip install pytesseract2安装Tesseract OCR程序
下载安装
github下载地址https://github.com/tesseract-ocr/tesseract
国内下载地址https://digi.bib.uni-mannheim.de/tesseract/
如果要识别中文的话要安装3.0以上的版本我这里以国内下载地址为例下载5.0版本如图
下载完成之后双击打开一路next即可自己选择好安装位置后面要配置环境变量的。
配置环境变量
我的安装位置如图
找到系统变量的path点击编辑如图 新建一个环境变量变量的值是tesseract的安装位置如图
点击确定之后在系统变量界面点击新建新建一个系统变量名称为TESSDATA_PREFIX值为安装目录下的tessdata目录位置如图 一路点击确定即可。
下载中文包
软件默认使用的是英文包只能识别英文我们现在下载配置中文包下载地址
githubhttps://github.com/tesseract-ocr/tessdata
gitcode国内https://gitcode.com/mirrors/tesseract-ocr/tessdata/tree/main?utm_sourcecsdn_github_acceleratorisLogin1
建议选择国内地址下载速度比较快我们下载五个包分别是eng.traineddata、chi_sim.traineddata、chi_sim_vert.traineddata、chi_tra.traineddata、chi_tra_vert.traineddata如图
第一个是英文包后面四个是中文包sim开头是简体tra开头是繁体点击进去点击右侧的下载将五个包下载下来如图 下载完成之后复制到tesseract安装目录下的tessdata文件夹下如图 在命令行输入tesseract -v显示tesseract的版本号就表示安装完成了如图
现在安装工作就完成了。
测试图片识别
测试图片如下 测试代码
import pytesseract
from PIL import Image# 1配置tesseract安装路径
pytesseract.pytesseract.tesseract_cmd rF:\tesseract\tesseract.exetext pytesseract.image_to_string(Image.open(r1-26.jpg))
print(text)结果如下
如果我们不想每次代码都去配置tesseract的安装路径的话可以直接在源文件里面修改我们找到如图的文件将框出来的地方修改成安装路径即可
2安装其他库
pip install PyMuPDF PIL二、正式提取图片型pdf的文字
代码如下
# -*- coding: UTF-8 -*-Date :2023/12/17import fitz
import pytesseract
from PIL import Image
import io# 1配置tesseract安装路径
pytesseract.pytesseract.tesseract_cmd rF:\tesseract\tesseract.exe# 2打开pdf文件
pdf_file fitz.open(r一户一宅.pdf)# 3遍历pdf的每一页
for page_num in range(len(pdf_file)):# 获取页面page pdf_file[page_num]# 提取页面上的图像image_list page.get_images(fullTrue)for image_index, img in enumerate(image_list):# 提取图像xref img[0]base_image pdf_file.extract_image(xref)image_bytes base_image[image]# 将字节转换为PIL图像image Image.open(io.BytesIO(image_bytes))# 使用pytesseract对图像进行ocrtext pytesseract.image_to_string(image, langchi_sim)# 打印结果print(fPage {page_num 1}, Image {image_index 1}:)print(text)# 关闭pdf文件
pdf_file.close()结果如下
总结
需要注意的是Tesseract OCR对于一些复杂或低质量的图像可能识别效果不佳。
提示
对于文字型pdf的提取可以看这几篇文章
https://blog.csdn.net/weixin_43856625/article/details/134705266
https://www.jianshu.com/p/8fbb662bd6f7
https://blog.csdn.net/Achernar0208/article/details/129199937