首页 > 其他分享 >一点奇怪的想法——paddleocr复现使用

一点奇怪的想法——paddleocr复现使用

时间:2024-03-15 10:58:57浏览次数:19  
标签:img paddleocr 想法 im 复现 PaddleOCR line ocr result

三个命令行安装paddleocr

conda create -n paddle02 python=3.8

activete paddle02

pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple

pip install paddleocr -i https://mirror.baidu.com/pypi/simple

大部分的应该是可以跑的

测试代码

# 第一个简单测试的可以跑
# from paddleocr import PaddleOCR
# import cv2
# ocr=PaddleOCR(use_angle_cls = True,use_gpu= False) #使用CPU预加载,不用GPU
# text=ocr.ocr("E:/2024/PaddleOCR-release-2.6/ppocr_img/imgs/1.jpg",cls=True)                     #打开图片文件
# #打印所有文本信息
# for t in text:
#     print(t[1][0])

# 这个跑不了  ---原因        解决:更换paddleOcr 版本 最新版本是2.6  V2.6的版本调用ocr.ocr 返
# 回的不是一个数组,是一个字符串,需要进行转换。有些s第二尽是不知所云,瞎讲。
# from paddleocr import PaddleOCR, draw_ocr
# from PIL import Image


# def my_ocr(img_path):
#     # need to run only once to download and load model into memory
#     # Paddleocr目前支持的多语言语种可以通过修改lang参数进行切换
#     # 例如`ch`, `en`, `fr`, `german`, `korean`, `japan`
#     ocr = PaddleOCR(use_angle_cls=True, lang="ch")
#     result = ocr.ocr(img_path, cls=True)
#     for line in result:
#         print(line)
#     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="E:/2024/PaddleOCR-release-2.6//doc/fonts/simfang.ttf")
#     im_show = Image.fromarray(im_show)
#     im_show.save('result.jpg')


# if __name__ == '__main__':
#     my_ocr("E:/2024/PaddleOCR-release-2.6/ppocr_img/imgs/1.jpg")
#     pass


# 这个跑不了  ---原因   可能同上     解决:更换paddleOcr 版本 最新版本是2.6  V2.6的版本调用ocr.ocr 返
# 回的不是一个数组,是一个字符串,需要进行转换。有些s第二尽是不知所云,瞎讲。
# -*- coding:utf-8 -*-
# @Time : 2021/6/24 16:39
# @Author : JulyLi
# @File : test.py
# @Software: PyCharm

# import cv2
# import paddleocr
# from PIL import Image, ImageDraw, ImageFont
# import numpy as np

# res = paddleocr.PaddleOCR(use_gpu=False).ocr(img=r'E:/2024/PaddleOCR-release-2.6/ppocr_img/imgs/1.jpg')

# img = Image.open(r'E:/2024/PaddleOCR-release-2.6/ppocr_img/imgs/1.jpg')
# im = np.array(img)
# for i in range(len(res)):
#     # cv2.rectangle(im, (int(res[i][0][0][0]), int(res[i][0][0][1])),
#     #               (int(res[i][0][2][0]), int(res[i][0][2][1])), (255, 0, 0), 1)
#     # 使用cv2.putText不能显示中文,需要使用下面的代码代替
#     cv2.putText(im, d['text'][i], (x, y-8), cv2.FONT_HERSHEY_SIMPLEX, 0.3, (255, 0, 0), 1)

#     pilimg = Image.fromarray(im)
#     pilimg.resize((800, 600), Image.ANTIALIAS)
#     draw = ImageDraw.Draw(pilimg)
#     # 参数1:字体文件路径,参数2:字体大小
#     font = ImageFont.truetype("E:/2024/PaddleOCR-release-2.6//doc/fonts/simfang.ttf", 15, encoding="utf-8")
#     # 参数1:打印坐标,参数2:文本,参数3:字体颜色,参数4:字体
#     text, sroce = res[i][1]
#     print (text, sroce)
#     draw.text((res[i][0][0][0], res[i][0][0][1]), text, (255, 0, 0), font=font)
#     im = cv2.cvtColor(np.array(pilimg), cv2.COLOR_RGB2BGR)

# cv2.imwrite("res.jpg", im)
# cv2.imshow("recoText", im)
# cv2.waitKey(0)
# cv2.destroyAllWindows()
#      解决:更换paddleOcr 版本 最新版本是2.6  V2.6的版本调用ocr.ocr 返回的不是一个数组,是一个字符串,需要进行转换。


# 这个跑不了  ---原因   可能同二   解决:更换paddleOcr 版本 最新版本是2.6  V2.6的版本调用ocr.ocr 返
# 回的不是一个数组,是一个字符串,需要进行转换。有些s第二尽是不知所云,瞎讲。
# from paddleocr import PaddleOCR, draw_ocr
# # 模型路径下必须含有model和params文件
# ocr = PaddleOCR(use_angle_cls=True,use_gpu=False)#det_model_dir='{your_det_model_dir}', rec_model_dir='{your_rec_model_dir}', rec_char_dict_path='{your_rec_char_dict_path}', cls_model_dir='{your_cls_model_dir}', use_angle_cls=True
# img_path = 'E:/2024/PaddleOCR-release-2.6/ppocr_img/imgs/11.jpg'
# result = ocr.ocr(img_path, cls=True)
# for line in result:
#     # print(line)
#     print (line)
#     # print (line[1][0])
#     # print (line[1][1])
    

 
# # 显示结果
# from PIL import Image
# image = Image.open(img_path).convert('RGB')
# boxes = [line[0][0] for line in result]
# txts = [line[1][0] for line in result]

# scores = [line[1][1] for line in result]
# # print (scores)
# im_show = draw_ocr(image, boxes, txts, scores, font_path='E:/2024/PaddleOCR-release-2.6//doc/fonts/simfang.ttf')
# im_show = Image.fromarray(im_show)
# im_show.save('result.jpg') #结果图片保存在代码同级文件夹中。

#可以跑
from paddleocr import PaddleOCR, draw_ocr
from PIL import Image
import fitz
import os
 
# Paddleocr目前支持的多语言语种可以通过修改lang参数进行切换
# 例如`ch`, `en`, `fr`, `german`, `korean`, `japan`
def ocrImg(language,img_path,result_img):
    ocr = PaddleOCR(use_angle_cls=True, use_gpu=False,lang=language)  # need to run only once to download and load model into memory
    img_path = img_path
    result = ocr.ocr(img_path, cls=True)
    for line in result:
        # print(line[-1][0], line[-1][1])
        print(line)
    # 显示结果
    image = Image.open(img_path).convert('RGB')
# 修改的关键
    boxes = [result[0] for line in result for result in line] # Nested loop added
    txts = [result[1][0] for line in result for result in line] # Nested loop added
    scores = [result[1][1] for line in result for result in line] # Nested loop adde
    # 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='E:/2024/PaddleOCR-release-2.6//doc/fonts/simfang.ttf')
    im_show = Image.fromarray(im_show)
    im_show.save(result_img)
    im_show.show(result_img)
def pdf_to_jpg(name,language):
    ocr = PaddleOCR(use_angle_cls=True, use_gpu=False,lang=language)  # need to run only once to download and load model into memory
    pdfdoc=fitz.open(name)
    temp = 0
    for pg in range(pdfdoc.page_count):
        page = pdfdoc[pg]
        rotate = int(0)
        # 每个尺寸的缩放系数为2,这将为我们生成分辨率提高四倍的图像。
        zoom_x = 2.0
        zoom_y =2.0
        trans = fitz.Matrix(zoom_x, zoom_y).prerotate(rotate)
        pm = page.get_pixmap(matrix=trans, alpha=False)
        pm._writeIMG('temp.jpg',1)
 
        #ocr识别
        result =ocr.ocr('temp.jpg', cls=True)
 
        #提取文件名
        xx=os.path.splitext(name)
        filename=xx[0].split('\\')[-1]+'.txt'
        #存储结果
        with open(filename,mode='a') as f:
            for line in result:
                if line[1][1]>0.5:
                    print(line[1][0].encode('utf-8').decode('utf-8'))
                    f.write(line[1][0].encode('utf-8').decode('utf-8')+'\n')
        print(pg)
if __name__ == '__main__':
 
    language = 'ch'
    img_path = 'E:/2024/PaddleOCR-release-2.6/ppocr_img/imgs/11.jpg'
#只是保持没有展示,需要展示的话,加个show(),算了还是加上吧。。。碎碎念
    result_img = 'E:/2024/PaddleOCR-release-2.6/ppocr_img/imgs/testas11.jpg'
    ocrImg(language,img_path,result_img)
    # pdf_to_jpg(r'F:/1docx.pdf','ch')

然后就是复现了这个 Umi-OCR-main

地址在--hiroi-sora/Umi-OCR_plugins: Umi-OCR 插件库 (github.com)

需要下载这个文件Releases · hiroi-sora/Umi-OCR_plugins (github.com) 

界面是好看的,至少比我写的好,后面的话应该是在这个上加填表的功能。看看能不搞出来

剩下的就是将识别出来的信息进行对应。各位大佬有无好的方法推荐。不甚感激。

标签:img,paddleocr,想法,im,复现,PaddleOCR,line,ocr,result
From: https://blog.csdn.net/jinfish2020/article/details/136721615

相关文章

  • PaddleOCR手写文字识别模型训练(摘抄所得,非原创)
    1.安装环境#首先git官方的PaddleOCR项目,安装需要的依赖gitclonehttps://github.com/PaddlePaddle/PaddleOCR.gitcdPaddleOCRpipinstall-rrequirements.txt2.数据准备本项目使用公开的手写文本识别数据集,包含ChineseOCR,中科院自动化研究所-手写中文数据集CASIA-......
  • 复现反序列化
    1、复现shiro的反序列化漏洞,实现反弹shell2、演示渗透测试和打点的手段,说明二者的区别一个指定了资产范围,一个从公司名开始收集3、描述hw蓝方有哪些组,工作内容有什么监测组:看态势感知,waf,写日报判断告警是否为真实告警研判组:处置组:根据真实告警,防火墙封禁攻击IP溯源组:尝试......
  • 【图像超分】论文复现:新手入门!Pytorch实现SRCNN,数据预处理、模型训练、测试、评估全流
    文章目录前言1.准备数据集和数据预处理1.1数据集选择1.2数据预处理1.3评估指标PSNR和SSIM1.3.1PSNR1.3.2SSIM2.定义网络结构3.设置参数并训练模型3.1参数设置3.2模型训练4.测试训练好的模型5.用训练好的SRCNN模型超分自己的图像数据6.其他补充6.1特征图......
  • 智慧城市数据大融合的几点想法
        随着信息化的不断深入,产生了各种类型的数据,包括结构化数据和非结构化数据,用不同的方式呈现出来,如数值型、文本型、图形图像、音频视频、传感器信号等格式。这些数据来源于现实世界,描述了现实世界,根据这些描述现实世界的数据,我们应该可以归纳出一定的社会规律,自然规......
  • python 使用PaddleOCR读取图片文字,并用pyttsx3转为音频
    python小白,纯纯小白,很久之前看了一遍菜鸟官网,但实在没有应用场景,所以过目即忘。最近工作不是很忙,给我出了个题目,觉得挺有意思,就玩一玩。  所以关键点就是,图片提取出文字,然后文字转音频。1.图片提取文字,PaddleOCR出题人士,给出了git上一个ocr的工具库,支持图文信息的抽取。用......
  • 蓝帽杯2022初赛-fastjson复现
    趁热打铁,直接复现一波蓝帽杯2022初赛的一道fastjson。简简单单写了个Dockerfile和docker-compose.yml,网上能找到jar包链接,然后启动服务:importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.parser.ParserConfig;importjava.util.Objects;importjava.util.re......
  • Nomic Embed:能够复现的SOTA开源嵌入模型
    Nomic-embed-text是2月份刚发布的,并且是一个完全开源的英文文本嵌入模型,上下文长度为8192。它在处理短文和长文本任务方面都超越了现有的模型,如OpenAI的Ada-002和text-embedding-3-small。该模型有137M个参数在现在可以算是非常小的模型了。模型、训练代码以及一个包含2.35亿文本......
  • CVE-2024-20931【复现】
    漏洞编号:CVE-2024-20931一、环境准备:1台Windows主机(10.46.47.227)作为攻击机|1台centos虚拟机(192.168.172.172)作为目标机|虚拟机网络模式为nat二、搭建漏洞环境1、docker拉取镜像1.1dockerpullismaleiva90/weblogic12|我已先完成(截图丢失),大概4~5g,拉取问题:国内镜像证......
  • 自己写的初始化脚本,其实也包含了一些功能,以后如果有什么想法,会继续在选项中追加
    #!/bin/bashbase_ori(){ #1.关闭防火墙 stop_firewalld(){ fw_stat=$(systemctlstatusfirewalld|awk'/Active/{print$3}') if[$fw_stat=="(running)"];then systemctlstopfirewalld&&echo"关闭防火墙" fi fw_e......
  • PaddleOCR 服务化部署(基于PaddleHub Serving)
    最近用到百度飞桨的PaddleOCR,研究了一下PaddleOCR的服务化部署,简单记录一些部署过程和碰到的问题。基础环境paddlepaddle2.5.2python3.7paddlehub2.1.0PaddleOCR2.6pip20#查看python版本python--version#查看pip版本pip--version#查看paddlepaddle版本......