pycharm中配置paddleocr记录

本文详细介绍了如何在PyCharm环境下配置PaddleOCR并进行模型测试的过程,包括环境搭建、模型下载、测试脚本编写等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pycharm中配置paddleocr记录

一、环境及电脑配置

1.python3
2.pycharm
3.ubntu20
4.gpu-cuda11.1-cudnn

二、下载代码

1.链接:https://github.com/PaddlePaddle/PaddleOCR
2.解压

unzip PaddleOCR-release-2.4.zip

三、pycharm中配置环境

1.根据requirements.txt建立虚拟环境
在这里插入图片描述
之后该路径中就是paddleocr的环境了。也可以pycharm中创建虚拟环境后,使用指令:

pip install -r requirements.txt

注意:如果是没有安装paddle的话,提前安装paddle。安装指令在该网址查询:https://www.paddlepaddle.org.cn/
环境配置基本到此结束!

四、测试模型

1.下载模型
模型下载
在这里插入图片描述
下载结束后解压模型

tar -xvf ch_ppocr_mobile_v2.0_cls_infer.tar
tar -xvf ch_PP-OCRv2_det_infer.tar
tar -xvf ch_PP-OCRv2_rec_infer.tar

在paddleocr文件夹下新建models文件夹,并将解压后的模型放置在models文件夹中。
在这里插入图片描述

2.开始测试
快速开始
接下来就是跟着上面的链接走了。下面主要记录一下遇到的问题
1.使用paddleocr --image_dir ./ppocr_img/imgs/11.jpg --use_angle_cls true --use_gpu false时会继续下载上面的模型文件。
在这里插入图片描述
下载后的模型,需要在ubuntu主目录下按"ctrl+h",显示隐藏文件。即可找到“.paddleocr”文件夹,自动下载后的模型也放置在这里。
在这里插入图片描述
能输出结果就是测试通过了
3.脚本调用
这个也是参考上述的官网教程,同样的只记录问题。
在paddleocr文件夹下新建脚本,写入下面的脚本即可。
官网的中英文与多语言使用脚本如下:

from paddleocr import PaddleOCR, draw_ocr

# Paddleocr目前支持的多语言语种可以通过修改lang参数进行切换
# 例如`ch`, `en`, `fr`, `german`, `korean`, `japan`
ocr = PaddleOCR(use_angle_cls=True, lang="ch")  # need to run only once to download and load model into memory
img_path = './imgs/11.jpg'
result = ocr.ocr(img_path, cls=True)
for line in result:
    print(line)

# 显示结果
from PIL import Image

image = Image.open(img_path).convert('RGB')
boxes = [line[0] for line in result]
txts = [line[1][0] for line in result]
scores = [line[1][1] for line in result]
im_show = draw_ocr(image, boxes, txts, scores, font_path='./fonts/simfang.ttf')
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')

遇到的问题记录:
1.OSError: cannot open resource
在这里插入图片描述
这里需要修改两处:
(1)img_path为自己的测试图像文件
(2)im_show = draw_ocr(image, boxes, txts, scores, font_path=’./fonts/simfang.ttf’)
中ttf文件为字体文件,通过查看draw_ocr实现方法,可以看到 字体文件在doc/fonts文件夹中,故修改为:

im_show = draw_ocr(image, boxes, txts, scores, font_path='./doc/fonts/simfang.ttf')

可视化结果为paddleocr文件夹下的result.jpg。

在这里插入图片描述
效果真不错!
官网的版面分析脚本:

import os
import cv2
from paddleocr import PPStructure,draw_structure_result,save_structure_res

table_engine = PPStructure(show_log=True)

save_folder = './output/table'
img_path = './table/paper-image.jpg'
img = cv2.imread(img_path)
result = table_engine(img)
save_structure_res(result, save_folder,os.path.basename(img_path).split('.')[0])

for line in result:
    line.pop('img')
    print(line)

from PIL import Image

font_path = './fonts/simfang.ttf' # PaddleOCR下提供字体包
image = Image.open(img_path).convert('RGB')
im_show = draw_structure_result(image, result,font_path=font_path)
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')

同样的将:
font_path改为doc/fonts文件夹中的字体。

from paddleocr import PPStructureV3 from pdf2image import convert_from_path import numpy as np import cv2 import os import traceback import logging def parse_pdf(pdf_path, poppler_path=None, output_dir="tables"): """ 修复版PDF表格提取函数(解决对象不可调用问题) :param pdf_path: PDF文件路径 :param poppler_path: Poppler工具路径 :param output_dir: 输出目录 """ try: # 创建输出目录 os.makedirs(output_dir, exist_ok=True) # 验证PDF文件存在性 if not os.path.exists(pdf_path): raise FileNotFoundError(f"PDF文件不存在: {pdf_path}") # PDF转图像 images = convert_from_path( pdf_path=pdf_path, dpi=200, poppler_path=poppler_path, fmt="jpeg", thread_count=4 ) print(f"成功转换 {len(images)} 页PDF为图像") # 初始化PPStructureV3引擎 logging.basicConfig(level=logging.INFO) engine = PPStructureV3(ocr=True) # 参数设置正确 # 修复:使用analyze()方法替代直接调用对象 for i, img in enumerate(images): # 转为OpenCV格式 img_array = np.array(img) img_cv = img_array[:, :, ::-1].copy() # 调用结构化分析(正确方法) result = engine(img_cv) print(f"第 {i + 1} 页识别到 {len(result)} 个结构化元素") # 保存表格结果 table_count = 0 for item in result: if item["type"].lower() == "table": table_count += 1 # 确保坐标有效 x1, y1, x2, y2 = [max(0, int(x)) for x in item["bbox"]] # 提取表格区域 table_img = img_cv[y1:y2, x1:x2] # 保存表格图像 table_name = f"page_{i + 1}_table_{table_count}.jpg" cv2.imwrite(os.path.join(output_dir, table_name), table_img) # 保存表格HTML if "res" in item and "html" in item["res"]: html_name = f"page_{i + 1}_table_{table_count}.html" with open(os.path.join(output_dir, html_name), "w", encoding="utf-8") as f: f.write(item["res"]["html"]) print(f"已保存第 {i + 1} 页表格 #{table_count},位置:{item['bbox']}") print(f"第 {i + 1} 页共识别到 {table_count} 个表格") except Exception as e: print("\n" + "=" * 50) print(f"处理失败: {str(e)}") traceback.print_exc() print("=" * 50 + "\n") # 使用示例 if __name__ == "__main__": poppler_path = r"D:\anaconda\pkgs\poppler-21.10.0-h24fffdf_0\Library\bin" pdf_path = r"D:\pycharm\project\数据处理\7.pdf" output_dir = r"D:\pycharm\project\数据处理\extracted_tables" # 验证路径 if not os.path.exists(poppler_path): print(f"错误:Poppler路径不存在 - {poppler_path}") print("解决方案:") print("1. 通过conda安装: conda install -c conda-forge poppler") print("2. 或下载二进制文件: https://github.com/oschwartz10612/poppler-windows/releases/") elif not os.path.exists(pdf_path): print(f"错误:PDF文件不存在 - {pdf_path}") else: parse_pdf(pdf_path, poppler_path, output_dir)
最新发布
07-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小俊俊的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值