python识别ocr 图片和pdf文件

复制代码
#识别图片
pip3 install paddleocr
pip3 install paddlepaddle


#识别pdf
pip3 install PyMuPDF

重点:路径不能有中文,不然pdf文件访问不了

复制代码
from paddleocr import PaddleOCR
from rest_framework.response import Response
from rest_framework.views import APIView


# 识别单张图片
class GetOneImage(APIView):
    def get(self, request, *args, **kwargs):
        ocr = PaddleOCR(use_angle_cls=True, lang="ch")  # need to run only once to download and load model into memory
        img_path = 'F:/OCR/data/4.png'
        result = ocr.ocr(img_path, cls=True)
        for idx in range(len(result)):
            res = result[idx]
            for line in res:
                print(line)

        # 显示结果
        for idx in range(len(result)):
            res = result[idx]
            txts = [line[1][0] for line in res]
        return Response({'code': 200, "data": txts})


import datetime
import fitz  # fitz就是pip install PyMuPDF
import os
import cv2
from paddleocr import PPStructure
from paddleocr.ppstructure.recovery.recovery_to_doc import sorted_layout_boxes

# 中文测试图
table_engine = PPStructure(recovery=True, lang='ch')


#识别pdf
class GetPDF(APIView):
    def get(self, request, *args, **kwargs):
        pdfPath = "F:/OCR/image/13.pdf";
        imagePath = "F:/OCR/image/13"
        startTime_pdf2img = datetime.datetime.now()  # 开始时间
        print("imagePath=" + imagePath)
        if not os.path.exists(imagePath):
            os.makedirs(imagePath)
        pdfDoc = fitz.open(pdfPath)
        totalPage = pdfDoc.page_count
        for pg in range(totalPage):
            page = pdfDoc[pg]
            rotate = int(0)
            zoom_x = 2
            zoom_y = 2
            mat = fitz.Matrix(zoom_x, zoom_y).prerotate(rotate)
            pix = page.get_pixmap(matrix=mat, alpha=False)
            print(f'正在保存{pdfPath}的第{pg + 1}页,共{totalPage}页')
            pix.save(imagePath + '/' + f'images_{pg + 1}.png')
        endTime_pdf2img = datetime.datetime.now()
        print(f'{pdfDoc}-pdf2img-花费时间={(endTime_pdf2img - startTime_pdf2img).seconds}秒')
        img_path = imagePath;
        text = []
        imgs = os.listdir(img_path)
        for img_name in imgs:
            img = cv2.imread(os.path.join(img_path, img_name))
            result = table_engine(img)
            h, w, _ = img.shape
            res = sorted_layout_boxes(result, w)
            for line in res:
                line.pop('img')
                print(line)
                for pra in line['res']:
                    text.append(pra['text'])
                text.append('\n')
        return Response({'code': 200, "data": text})

参考:使用paddleOCR批量识别pdf_paddleocr pdf-CSDN博客

相关推荐
B站_计算机毕业设计之家7 分钟前
豆瓣电影数据采集分析推荐系统 | Python Vue Flask框架 LSTM Echarts多技术融合开发 毕业设计源码 计算机
vue.js·python·机器学习·flask·echarts·lstm·推荐算法
渣渣苏14 分钟前
Langchain实战快速入门
人工智能·python·langchain
lili-felicity23 分钟前
CANN模型量化详解:从FP32到INT8的精度与性能平衡
人工智能·python
数据知道26 分钟前
PostgreSQL实战:详解如何用Python优雅地从PG中存取处理JSON
python·postgresql·json
ZH154558913139 分钟前
Flutter for OpenHarmony Python学习助手实战:面向对象编程实战的实现
python·学习·flutter
玄同76540 分钟前
SQLite + LLM:大模型应用落地的轻量级数据存储方案
jvm·数据库·人工智能·python·语言模型·sqlite·知识图谱
User_芊芊君子1 小时前
CANN010:PyASC Python编程接口—简化AI算子开发的Python框架
开发语言·人工智能·python
白日做梦Q1 小时前
Anchor-free检测器全解析:CenterNet vs FCOS
python·深度学习·神经网络·目标检测·机器学习
喵手1 小时前
Python爬虫实战:公共自行车站点智能采集系统 - 从零构建生产级爬虫的完整实战(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集公共自行车站点·公共自行车站点智能采集系统·采集公共自行车站点导出csv
喵手1 小时前
Python爬虫实战:地图 POI + 行政区反查实战 - 商圈热力数据准备完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·地区poi·行政区反查·商圈热力数据采集