【layoutlmv3推理】无法识别的pdf使用ocr识别代码demo实例

目录

  • 前情提要
  • 一、安装依赖
    • 1、直接安装的依赖
    • 2、需要编译的依赖
      • 1)Leptonica
      • 2)icu
      • 3)Tesseract
    • 3、需要自行配置的依赖
  • 二、模型下载
  • 三、更改transformers源码
  • 四、加载光学字符识别语言包
  • 五、运行代码

前情提要

在做pdf转文本时,发现有些pdf文件中的文本无法进行识别
使用过pdfminer、PyMuPDF识别为空
OCR的模型百度的自然最好,但是要收钱
layoutlmv3搜了半天找不到推理代码,全是训练代码,所以就自己研究着写了一下
本次使用的是layoutlmv3-base-chinese
多语言版本可以使用layoutlmv3-large

一、安装依赖

1、直接安装的依赖

gcc、cmake等自行安装最新版

pip install sentencepiece
yum install libtool
yum groupinstall "Development Tools"
yum install libjpeg-devel libpng-devel libtiff-devel
yum install poppler-utils

找到pdfinfo

which pdfinfo
# /usr/bin/pdfinfo
# 添加该路径至环境变量
vim /etc/environment
# PATH="xxxx“这一行中

2、需要编译的依赖

1)Leptonica

# 下载 Leptonica 的源代码
wget http://www.leptonica.org/source/leptonica-1.80.0.tar.gz

# 解压源代码包
tar -zxvf leptonica-1.80.0.tar.gz

# 进入解压后的目录
cd leptonica-1.80.0

# 配置并构建
./configure
make

# 安装
sudo make install

2)icu

https://github.com/unicode-org/icu/releases
下载Source code(tar.gz)后找到icu-release-75-1/icu4c/source
和上面一样安装即可

3)Tesseract

# 下载 tesseract-ocr 的源代码
git clone https://github.com/tesseract-ocr/tesseract.git

# 进入解压后的目录
cd tesseract

./autogen.sh

# 配置并构建
./configure

# 安装
make
sudo make install
# 检查版本
tesseract --version

得到以下结果则安装成功

tesseract 5.3.4-49-g577e8
 leptonica-1.80.0
  libjpeg 6b (libjpeg-turbo 1.2.90) : libpng 1.5.13 : libtiff 4.0.3 : zlib 1.2.7
 Found AVX512BW
 Found AVX512F
 Found AVX512VNNI
 Found AVX2
 Found AVX
 Found FMA
 Found SSE4.1
 Found OpenMP 201511
 Found libcurl/7.29.0 NSS/3.90 zlib/1.2.7 libidn/1.28 libssh2/1.8.0

3、需要自行配置的依赖

在这里插入代码片

二、模型下载

https://huggingface.co/microsoft/layoutlmv3-base-chinese/tree/main
在这里插入图片描述

三、更改transformers源码

找到自己虚拟环境的地址,实例:

/root/anaconda3/envs/your_envs/lib/python3.10/site-packages/transformers/models/layoutlmv3/processing_layoutlmv3.py

49 行更改为:

tokenizer_class = ("LayoutLMv3Tokenizer", "LayoutLMv3TokenizerFast",'XLMRobertaTokenizer','XLMRobertaTokenizerFast','LayoutXLMTokenizer')

四、加载光学字符识别语言包

源地址https://github.com/tesseract-ocr/tessdata
【chi_sim.traineddata】中文包点击下载
【eng.traineddata】英文包点击下载
【enm.traineddata】数字包点击下载
下载后放入/usr/local/share/tessdata/

五、运行代码

import os
from transformers import XLMRobertaTokenizer,LayoutLMv3Tokenizer, AutoModel, AutoProcessor, LayoutLMv3ImageProcessor, LayoutLMv3Processor
from pdf2image import convert_from_path
from PIL import Image

model_name = "/your/model/path/layoutlmv3-base-chinese"
image_processor = LayoutLMv3ImageProcessor.from_pretrained(model_name, ocr_lang='chi_sim+eng')
tokenizer = XLMRobertaTokenizer.from_pretrained(model_name)
processor = LayoutLMv3Processor(image_processor=image_processor,tokenizer=tokenizer,apply_ocr=True)
feature_extractor = processor.feature_extractor

pdf_file = '/your/pdf_data/path/case_1.pdf'
pages = convert_from_path(pdf_file, 300)  # 300 是输出图片的 DPI(每英寸点数)
# 创建保存图片的目录
output_dir = os.path.join(os.path.dirname(pdf_file), 'images')
os.makedirs(output_dir, exist_ok=True)

for i, page in enumerate(pages):
    image_path = os.path.join(output_dir, f'page_{i + 1}.jpg')
    page.save(image_path, 'JPEG')
    image = Image.open(image_path)
    inputs = feature_extractor(image)
    print(inputs['words'])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/569347.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用于割草机器人,商用服务型机器人的陀螺仪

介绍一款EPSON推出适用于割草机器人,商用服务型机器人的高精度陀螺仪模组GGPM61,具体型号为GGPM61-C01。模组GGPM61是一款基于QMEMS传感器的低成本航向角输出的传感器模组,它可以输出加速度、角速度及姿态角等信息,为控制机器人运…

航空业微服务架构中台的构建与实践

随着航空业的快速发展,航空公司需要面对更加复杂的业务环境和客户需求。在这样的背景下,构建一个稳健、高效的微服务架构中台成为了航空公司的当务之急。本文将探讨航空业微服务架构中台的设计理念、关键技术以及实践经验,帮助航空公司构建具…

「Java开发指南」如何利用MyEclipse启用Spring DSL?(二)

本教程将引导您通过启用Spring DSL和使用Service Spring DSL抽象来引导Spring和Spring代码生成项目,本教程中学习的技能也可以很容易地应用于其他抽象。在本教程中,您将学习如何: 为Spring DSL初始化一个项目创建一个模型包创建一个服务和操…

面向多源异质遥感影像地物分类的自监督预训练方法

源自:测绘学报 作者:薛志祥, 余旭初, 刘景正, 杨国鹏, 刘冰, 余岸竹, 周嘉男, 金上鸿 摘 要 近年来,深度学习改变了遥感图像处理的方法。由于标注高质量样本费时费力,标签样本数量不足的现实问题会严重影响深层神经网络模型的性能。为解决这一突出矛盾…

将本地项目推送至gitlab仓库

1. gitlab上新建一个空白项目 gitlab上点击new project按钮,新建一个项目 新建空白项目 项目名称与本地新建项目名称相同,其余根据具体需要选择 2. 初始化本地仓库并commit项目 进入本地项目根目录下,右击 git bash here打开命令窗口 初始化…

MappedStatement解析流程

前言 之前写了一篇博文,介绍了mybatis的解析过程,其中mapper标签只演示了如何使用,这篇博文我们来探究mapper标签解析流程 源码解析 核心方法入口 引入mapper方式 使用相对于类路径的资源引用使用完全限定资源定位符(URL&…

“五之链”第十六期沙龙活动在呆马科技成功举办

2024年4月19日,由临沂呆码区块链网络科技有限公司(呆马科技)承办的第十六期“五之链”物流主题沙龙活动成功举办。此次活动邀请了政府相关部门、知名科研院所、物流企业等20余家单位参与,共同探讨物流数据要素流通与智能应用的发展…

新版ONENET(2024/4/24)通过view3.0可视化保姆级教程(一学就会)附效果图

⏩ 大家好哇!我是小光,想要成为系统架构师的嵌入式爱好者。 ⏩上一篇是STM32通过ESP8266连接最新版的ONENET,成功将数据上传之后,本篇文章使用ONENET的view3.0可视化对数据进行可视化做一个详细教程。 ⏩感谢你的阅读,…

AnaTraf网络流量分析仪:实时分析工具助您优化网络架构

导言: 在如今高度互联的数字时代,网络流量分析成为了企业和组织必备的工具之一。AnaTraf网络流量分析仪作为一款高性能的实时网络流量分析工具,不仅能够帮助用户进行全流量回溯分析、网络流量监控和网络性能分析,更可以快速排除网…

两天速通阿里

感觉这一周太梦幻了,就像一个梦,很不真实~~~ 感觉这个暑期,我的运气占了99成,实力只有百分之一 4.15上午 腾讯csig 腾讯云部门,面完秒进入复试状态 4.16下午 美团优选供应链部门,4.18上午发二面 4.17晚上 阿…

C#基础|属性Property之读写特性和经典总结

哈喽,你好,我是雷工。 本节学习属性特性——控制读写操作,以下为学习笔记。 01 只读属性 写法1:直接去掉set方法,可以在定义的时候初始化。 示例: public string CourseName{get;}“雷工笔记…

2024年学浪提取视频#小浪助手

2024年,学习视频已经成为人们获取知识和提升技能的重要途径,而学浪视频平台以其丰富多样的学习资源备受瞩目。然而,有时我们可能只需要其中的一小部分内容,而不想将整个视频都下载下来。在这个时候,小浪助手作为一款强…

软件无线电系列——Nyquist采样定理

本节目录 一、Nyquist采样定理 1、Nyquist采样定理的定义 2、Nyquist采样定理的证明本节内容 一、Nyquist采样定理 如果对某一时间连续信号进行采样,当采样速率达到一定数值时,就可以根据这些采样值准确地确定原信号。 1、Nyquist采样定理的定义 何为Ny…

这操作真牛!APT杜绝软件包被篡改

0x00 简介 我们介绍了传统包管理器、新型包管理器的工作方式,其中用了大篇幅介绍 APT 包管理器,但是没有对安全人员比较关心的软件包校验问题进行介绍 0x01 大众疑问环节 这部分主要是从常规 Linux 使用者的视角,提出一些平时工作过程中的…

到底什么是爬虫

1. 引言 在数据驱动的世界里,网络爬虫(Web Crawling)技术扮演着获取和处理网上数据的关键角色。无论是为了数据分析、机器学习项目的数据集构建还是简单地监测网页变化,学习如何创建一个基本的网页爬虫可以大大提升你的工作效率和…

万兆以太网MAC设计(7)ARP协议报文格式详解以及ARP层模块设计

文章目录 前言:1、ARP协议详解2、ARP工作机制 二、ARP_RX模块设计三、ARP_TX模块设计四、ARP_table模块5、仿真5.1、发送端5.2、接收端5.3、缓存表 总结 前言: 1、ARP协议详解 ARP数据格式: 硬件类型:表示硬件地址的类型。它的值为1表示以太…

postman接口自动化

1.基础知识 1.打开postman新建一个文件夹。 (建立每一部分文件夹可以更好的管理接口信息) 2.postman基本介绍 这里用到的是我自己的一个项目。 params:查询字符串,一般作为url的一部分。 authorization :鉴权&…

CentOS 7.9.2007 中Docker使用GPU

一、安装nvidia驱动 1.1,查看显卡驱动 # 查看显卡型号 lspci | grep -i nvidia 1.2,进入 PCI devices ,输入上一步查询到的 2204 1.3,进入 官方驱动 | NVIDIA,查询 Geforce RTX 3090 驱动并下载 1.4,禁用…

数据结构(C):时间复杂度和空间复杂度

目录 🚀 0.前言 🚀 1.为何会有时间复杂度和空间复杂度的概念 🚀 2.时间复杂度 2.1初步时间复杂度 2.2大O表示法 2.2.1.O(N*N) 2.2.2.O(N) 2.2.3.O(1) 2.3最坏情况…

Set A Light 3D Studio:轻松上手,打造专属3D作品!

set a light 3d studio mac版是mac上一款功能方面相当强大的3D摄影棚布光工具,可以帮助摄影行业的工作用户在进行3D室内拍摄的时候,完成对灯光的位置调整设置,只要运用该软件,支持对各种灯光的道具摆放位置,灯光的反射…