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

news2024/11/18 5:46:33

目录

  • 前情提要
  • 一、安装依赖
    • 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.coloradmin.cn/o/1619560.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

美硕科技授权世强硬创代理,继电器具备控制功率小、电磁干扰小特点

受工业自动化、智能制造、物联网以及可再生能源等领域发展的推动,全球继电器市场在过去几年中持续增长,预计未来几年将继续保持这一趋势。 为满足日益增长的市场需求,世强先进(深圳)科技股份有限公司(下称…

【c++】多态虚函数抽象类继承中的虚函数表详解

主页:醋溜马桶圈-CSDN博客 专栏:c_醋溜马桶圈的博客-CSDN博客 gitee:mnxcc (mnxcc) - Gitee.com 目录 1. 多态的概念 1.1 概念 2. 多态的定义及实现 2.1 多态的构成条件 ​2.2 虚函数 2.3 虚函数的重写 2.3.1 虚函数重写的两个例外…

两天速通阿里

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

uniapp——组件多颜色模块展示、气泡框

一、自定义颜色&#xff1a; 样式 代码 <template><view class"content"><!-- 右上角 --><view class"coverStatus" :class"[itemClass, positionClass,cornerClass,sanJiaoCss,sanJiaoCss2]":style"dynamicStyle&q…

python辅助QQ登入

python辅助QQ登入 import pyautogui import time import random from pyautogui import ImageNotFoundException# 生成随机等待时间&#xff0c;范围在1到3秒之间 random_time random.uniform(1, 3)def find_and_click(image_path, moveFalse, execute_nextTrue):try:image_l…

Linux防火墙相关命令以及ip白名单配置

Linux防火墙相关命令以及ip白名单配置 firewall防火墙基础命令查看防火墙的服务状态查看防火墙的状态服务的开启、关闭和重启查看防火墙规则端口的查询、开放和关闭重启防火墙 防火墙白名单配置部分参数介绍 firewall防火墙基础命令 查看防火墙的服务状态 systemctl status f…

网络工程师----第十二天

哈希、数字签名和数字证书&#xff1a; PKi体系架构&#xff1a; PKI&#xff08;Public Key Infrastructure&#xff0c;公钥基础设施&#xff09;是通过使用公钥技术和数字证书来提供系统信息安全服务&#xff0c;并负责验证数字证书持有者身份的一种体系。PKI基础设施采用证…

JAVA toString方法详解

hi&#xff0c;我是程序员王也&#xff0c;一个资深Java开发工程师&#xff0c;平时十分热衷于技术副业变现和各种搞钱项目的程序员~&#xff0c;如果你也是&#xff0c;可以一起交流交流。 今天我们来聊聊Java中toString方法~ toString方法的定义 在Java中&#xff0c;toStri…

2024年区块链链游即将迎来大爆发

随着区块链技术的不断发展和成熟&#xff0c;其应用领域也在不断扩展。其中&#xff0c;区块链链游&#xff08;Blockchain Games&#xff09;作为区块链技术在游戏行业中的应用&#xff0c;备受关注。2024年&#xff0c;区块链链游行业即将迎来爆发&#xff0c;这一趋势不容忽…

如何为Windows计算机选择最佳数据恢复工具?

学术或专业平台上的每个人都会遭受意外的数据丢失。数据丢失的原因有很多&#xff0c;包括意外删除、软件损坏或病毒攻击。人们需要一个可靠的数据恢复工具来解决这个问题&#xff0c;以恢复丢失的文件。由于有许多数据恢复软件&#xff0c;恢复已删除的文件不是问题。 您是否…

matlab回归学习

前言 所谓回归学习即预测&#xff0c;便是由已知的数据推测未知的数据&#xff0c;利用转速与转矩来推测电流。 1、数据准备 下面虚拟一组转速转矩以及电流数据。 speed [100 220 330 440 550 660]; torque [200 300 400 500 700 900]; I [400 500 603 739 821 912]; arr …

Appium一本通

Appium介绍 概念&#xff1a;Appium是一个移动App(手机应用)自动化工具。 用途&#xff1a;重复性任务、爬虫、自动化测试。 特点&#xff1a;开源免费、多平台支持(ios\android)、多类型支持(native\webview)、类selenium支持多语言(java\python\js\ruby) Appium原理 三个主…

数据分析学习资源(未完)

1、PDF 数据分析自学攻略 增长黑客&#xff08;AARRR&#xff09; 量化思维

齐护K210系列教程(二)_点亮板载灯

文章目录 1&#xff0c;程序的上传2&#xff0c;点亮板载R-G-B三色灯2-1 齐护编程块方式 2&#xff0c;红色呼吸灯&#xff08;渐亮渐灭&#xff09;4&#xff0c;RGB幻彩呼吸灯联系我们 1&#xff0c;程序的上传 接上节课&#xff0c;我们选择板卡【MicroPython[QDPK210_AIst…

生成式AI原理技术详解(一)——神经网络与深度学习

本文主要介绍了生成式AI的最新发展&#xff0c;提到了GPT-5和AI软件工程师在行业中的影响&#xff0c;指出AI技术进步对国家竞争和个人职业发展的潜在影响。 未来已来 最近有两则新闻&#xff1a; sam altman自曝GPT-5细节&#xff0c;公开宣称GPT-5提升将非常大&#xff0c;任…

有哪些实用的AI绘画软件?不要错过这7款AI画画神器

随着人工智能软件的不断推出&#xff0c;其中备受瞩目的AI绘画工具为创作者们带来了崭新的创作方式和激发灵感的机会&#xff0c;下面跟着小编一起探索AI技术在绘画领域的无限可能&#xff01;看看有哪些实用的AI绘画软件&#xff1f; 第一款&#xff1a;爱制作AI 爱制作AI是一…

计算机网络物理层思维导图+大纲笔记

大纲笔记&#xff1a; 物理层的基本概念 解决如何在连接各种计算机的传输媒体上传输数据比特流&#xff0c;而不是具体的传输媒体 主要任务 确定与传输媒体接口有关的一些特性 机械特性 电气特性 功能特性 规程特性信道上传送的信号 基带信号 来自信源的信号&#xff0c;直接表…

如何恢复已删除的微信联系人?

“您好&#xff0c;我删除了微信中的 5 个联系人。微信中已删除的联系人可以恢复吗&#xff1f;我使用的是 iPhone 15。” – 董奇 现在&#xff0c;越来越多的人使用微信应用程序与他人交流。微信中的联系人可能对我们来说非常重要。如果您误删了一些联系人&#xff0c;则必须…

云安全防御篇:如何识别并做好服务器DDoS防护?

伴随着全球互联网业务和云计算的快速发展&#xff0c;作为一种破坏力巨大的攻击方式&#xff0c;DDoS攻击正以超出服务器承受能力的流量淹没网站&#xff0c;导致服务器宕机、企业营业额下跌&#xff0c;甚至企业品牌形象受损。越是面对复杂的攻击&#xff0c;就需要性能更强的…

力荐!吃透这34张思维导图你的网络架构就赢了(附高清版下载)

计算机网络是进入到IT行业的第一道门槛。虽然是入门级别&#xff0c;但知识又多又杂&#xff0c;初学者很难记忆。 今天就分享34张思维导图&#xff0c;帮你梳理网络知识架构&#xff0c;加深印象快速掌握关键核心知识点&#xff0c;需要的便宜一定要收藏认真观看&#xff01;…