从PDF中提取图像,如何处理JBIG2编码

2023-12-03

我有一堆 PDF 文件,其中一些是纯文本,但有些完全或部分保存为“每页一个图像”,因为它们是从扫描仪生成的。

我需要提取所有图像包含在 PDF 中,然后分别检查每个图像。

我能够提取大部分图像在 SO 中找到一个 python 脚本,请参阅问题:

在Python中从PDF中提取图像而不重新采样?

一些包含的图像是使用 JBIG2 编码的,我找不到任何 python 或其他工具来将 jbig2 转换为可以使用通用图形工具轻松打开的东西。


好吧,我已经为此苦苦挣扎了好几个星期,SO 的许多答案帮助我度过了难关,但总是缺少一些东西,显然这里没有人遇到过 jbig2 编码图像的问题。

在我要扫描的一堆 PDF 中,jbig2 编码的图像非常流行。

据我了解,有许多复印/扫描机可以扫描纸张并将其转换为包含 jbig2 编码图像的 PDF 文件。

因此,经过多天的测试,决定采用建议的答案heredkgedal 很久以前写的。

这是我的一步步在 Linux 上:(如果你有另一个操作系统,我建议使用 Linux docker,这会容易得多。)

第一步:

apt-get 安装poppler 工具然后我可以运行名为 pdfimages 的命令行工具,如下所示:

pdfimages -all myfile.pdf ./images_found/

通过上面的命令你就可以解压了所有图像包含在 myfile.pdf 中,您将把它们保存在 images_found 中(您必须之前创建 images_found)

在列表中,您可以找到多种类型的图像(取决于您的 pdf),例如:png、jpg、tiff;所有这些都可以使用任何图形工具轻松读取。

然后您将得到一些名为 -145.jb2e 和 -145.jb2g 的文件。

这 2 个文件包含一张用 jbig2 编码的图像,即保存在2个不同的文件中一个用于标题,一个用于数据

我又花了很多天的时间试图找出如何将这些文件转换为可读的文件,最后我遇到了这个名为jbig2dec

所以首先你需要安装这个神奇的工具:

apt-get 安装 jbig2dec

然后你可以运行:

jbig2dec -t png -145.jb2g -145.jb2e

您最终将能够将所有提取的图像转换为有用的东西。

祝你好运!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从PDF中提取图像,如何处理JBIG2编码 的相关文章

  • Flask+Nginx+uWSGI:导入错误:没有名为站点的模块

    我安装为http www reinbach com uwsgi nginx flask virtualenv mac os x html http www reinbach com uwsgi nginx flask virtualenv
  • PyQt:如何通过匿名代理使用网页

    这真让我抓狂 我想在 QWebPage 中显示一个 url 但我想通过匿名代理来实现 Code setting up the proxy proxy QNetworkProxy proxy setHostName 189 75 98 199
  • Kivy - 文本换行工作错误

    我正在尝试在 Kivy 1 8 0 应用程序中换行文本 当没有太多文字时 一切正常 但如果文本很长并且窗口不是很大 它只是剪切文本 这是示例代码 vbox BoxLayout orientation vertical size hint y
  • Python在postgresql表中查找带有单引号符号的字符串

    我需要从 psql 表中查找包含多个单引号的字符串 我当前的解决方案是将单引号替换为双单引号 如下所示 sql query f SELECT exists SELECT 1 FROM table name WHERE my column m
  • 将 numpy 数组写入文本文件的速度

    我需要将一个非常 高 的两列数组写入文本文件 而且速度非常慢 我发现如果我将数组改造成更宽的数组 写入速度会快得多 例如 import time import numpy as np dataMat1 np random rand 1000
  • Tweepy StreamListener 到 CSV

    我是 python 新手 我正在尝试开发一个应用程序 使用 Tweepy 和 Streaming API 从 Twitter 检索数据并将数据转换为 CSV 文件 问题是此代码不会创建输出 CSV 文件 也许是因为我应该将代码设置为在实现例
  • 如何在 PyCharm 4.5.2 中使用 PyPy 作为标准/默认解释器?

    如何在 PyCharm 4 5 2 中使用 PyPy 作为标准 默认解释器 一切都在 Ubunutu 14 10 下运行 并且 pypy 已经安装 您可以在项目的设置下进行配置 这个官方文档直接涵盖了 https www jetbrains
  • 登录网站并使用 python 请求下载文件

    我有一个带有 HTML 表单的网站 登录后 它会将我带到 start php 站点 然后将我重定向到overview php 我想从该服务器下载文件 当我单击 ZIP 文件的下载链接时 链接后面的地址是 getimage php path
  • 可以用 Django 制作移动应用程序吗?

    我想知道我是否可以在我的网站上使用 Django 代码 并以某种方式在移动应用程序 Flutter 等框架中使用它 那么是否可以使用我现在拥有的 Django 后端并在移动应用程序中使用它 所以就像models views etc 是的 有
  • WindowsError:[错误 126] 使用 ctypes 加载操作系统时

    python代码无法在Windows 7平台上运行 def libSO lib ctypes cdll LoadLibrary ConsoleApplication2 so lib cfoo2 1 3 当我尝试运行它时 得到来自python
  • Apache Spark 中的高效字符串匹配

    我使用 OCR 工具从屏幕截图中提取文本 每个大约 1 5 句话 然而 当手动验证提取的文本时 我注意到时不时会出现一些错误 鉴于文本 你好 我真的很喜欢 Spark 我注意到 1 像 I 和 l 这样的字母被 替换 2 表情符号未被正确提
  • 具有屏蔽无效值的 pcolormesh

    我试图将一维数组绘制为 pcolormesh 因此颜色沿 x 轴变化 但每个 x 的 y 轴保持不变 但我的数据有一些错误值 因此我使用屏蔽数组和自定义颜色图 其中屏蔽值设置为蓝色 import numpy as np import mat
  • Pandas style.bar 颜色基于条件?

    如何渲染其中一列的 Pandas dfstyle bar color属性是根据某些条件计算的 Example df style bar subset before after color ff781c vmin 0 0 vmax 1 0 而
  • 由于 json 字符串化 dict 键导致数据丢失

    考虑下面的例子 gt gt gt import json gt gt gt d 0 potato 0 spud gt gt gt json dumps d 0 potato 0 spud gt gt gt json loads json d
  • 解析根元素内元素之间的 XML 文本

    我正在尝试用 Python 解析 XML 以下是 XML 结构的示例 a aaaa1 b bbbb b aaaa2 a
  • Python]将两个文本文件合并为一个(逐行)[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我是蟒蛇新手 我想做的是将文件 a 和文件 b 逐行合并到一个文件中 例如 text file a a n b n c text fi
  • 处理大文件的最快方法?

    我有多个 3 GB 制表符分隔文件 每个文件中有 2000 万行 所有行都必须独立处理 任何两行之间没有关系 我的问题是 什么会更快 逐行阅读 with open as infile for line in infile 将文件分块读入内存
  • 在 virtualenvwrapper 中激活环境

    我安装了virtualenv and virtualenvwrapper用这个命令我创建了一个环境 mkvirtualenv cv 它有效 创建后我就处于新环境中 现在我重新启动了我的电脑 我想activate又是那个环境 但是怎么样 我使
  • Django 模型:如何使用 mixin 类来覆盖 django 模型以实现 save 等功能

    我想在每次保存模型之前验证值 所以 我必须重写保存函数 代码几乎是一样的 我想把它写在 mixin 类中 但失败了 我不知道如何写 super func 我英语不好 抱歉 class SyncableMixin object def sav
  • 缓存 Flask-登录 user_loader

    我有这个 login manager user loader def load user id None return User query get id 在我引入 Flask Principal 之前它运行得很好 identity loa

随机推荐

  • SSIS XMLSource 在 XML 变量中仅看到空值

    我有一个带有引用 XML 变量的 XMLSource 的数据流任务 DataFlow 任务确实识别出变量中有 x 行 但它只在每行中看到空值 xml变量值
  • 如何向 dom 对象添加 xml 标头

    我正在使用 Python 的 xml dom minidom 但我认为这个问题对于任何 DOM 解析器都有效 我的原始文件在开头有这样一行 这似乎不是 dom 的一部分 所以当我执行 dom toxml 之类的操作时 生成的字符串在开头没有
  • iOS 获取 UIImageView 图像的可见部分

    我正在尝试获取可见部分UIImage从一个UIImageView UIImageView占据整个屏幕 添加了捏合和平移手势UIImageView 因此 用户可以平移 缩放图像视图 平移 缩放后 我只想裁剪图像视图的可见部分 我尝试了很多方法
  • 如何在运行 Gingerbread 的 root NexusOne 上安装 sqlite3

    我的根基是经营姜饼的纽带 但就像下面的帖子一样 我找不到 sqlite3 并且想在 Nexus One 上安装 sqlite3 当我尝试使用 adb shell 打开数据库时 为什么在已 root 的 Nexus One 上收到 sqlit
  • 如何在制表器中创建多选标题过滤器?

    多年来 这个问题在 Tabulator GitHub 存储库中以各种形式被多次提出 以下是一些例子 https github com olifolkerd tabulator issues 527 https github com olif
  • 如何在.Net Core应用程序中读取web.config文件

    我创建了一个 Net Core API 并引用了一个 Net 框架应用程序 引用的应用程序连接到数据库 其连接字符串存储在 web config 文件中 string CONNSTR ConfigurationManager Connect
  • 从 Facebook Ads API 获取指标

    我无法从 Facebook API 获取以下指标 我如何从 Facebook Ads API 计算出现在 Facebook 自己的广告界面中的这些指标 Reach 社会影响力 频率 CPC CPM 当您获得广告组 ID 后 您必须发出 AP
  • ffmpeg未知关键字处理输入时发现无效数据

    我有一个文件ffmpeg list of files txt与内容 file Output 0 forces vs radii pdf file Output 1 forces vs radii pdf file Output 2 forc
  • 添加不同长度的熊猫列

    我在 pandas 中添加列时遇到问题 我有DataFrame 维度是nxk 在这个过程中 我需要添加维度为 mx1 的列 其中 m 1 n 但我不知道 m 当我尝试这样做时 df Name column data type data li
  • 什么时候使用括号,什么时候不使用?

    我怎么能说 var myFunction function setTimeout myFunction 1000 myFunction 为什么函数会调用setTimeout不需要括号 但最后一行需要吗 Nutshell myFunction
  • 确定两个 360x180 等距柱状全景图像之间的相机旋转

    我有 n 帧 360x180 全景图像 我想根据两个连续图像之间的比较来确定相机的旋转 对于这个项目 可以安全地假设图像中可见的所有特征都在无穷远 我 今天 是 OpenCV 的新手 肯定需要做更多的阅读 我有一个应用程序可以使用 SIFT
  • 在 Windows 上的软件中关闭 USB 设备的电源

    我想通过 Windows 上的软件重新启动 USB 设备 我正在开发一个小型 USB 电源微控制器 该芯片将在电源循环后恢复到本机行为并允许代码下载 由于我的代码会在出现问题时使设备崩溃 使其忽略所有 USB 命令 因此我必须从系统中物理拔
  • 将带有图像的 HTML5 画布另存为图像

    我正在尝试将带有图像的画布保存为 PNG 但是当我尝试这样做时 var myCanvas document getElementById myCanvas var img document createElement img var ctx
  • 带有自定义视图的 AlertDialog:调整大小以包裹视图的内容

    我在正在构建的应用程序中遇到了这个问题 请忽略所有设计缺陷和缺乏最佳实践方法 这纯粹是为了展示我无法解决的问题的示例 I have DialogFragment它返回一个基本的AlertDialog与定制View设置使用AlertDialo
  • jquery发送post数据而不定义url

    是否可以通过ajax或post发送数据而不定义url 这是我正在尝试工作的代码 gll delete click function var gll gll val var gll string gll split var gll id gl
  • jquery 替换不起作用

    DEMO 你好 我正在尝试删除 JS 中的箭头 但似乎替换不起作用 a class pr page prev Previous a a class pr page next Next a pr page prev text replace
  • 在 Windows 10 TP 上使用 VS-2015 CTP 5 和 Python 3.5a 编译 boost-python 教程

    我正在尝试获取boost python 扩展模块教程在 Windows 10 中使用现代 C 14 编译器 我已经使用 vc 14 VS 2015 CTP 5 下载了最新版本的 boost 1 57 和 python 3 5a 源代码 我使
  • c++ - SendInput() 无法正确管理 Alt 代码

    在我正在开发的程序中 我必须模拟击键 为此我使用SendInput 方法 传递一个向量作为参数 该向量包含作为击键一部分的输入 我当前的代码似乎可以与我正在测试的所有组合正常工作 Alt 代码除外 这就是我目前所做的 Press ALT i
  • PHP 数组转换为对象的效率?

    据我了解 PHPstdClass当代码嵌套得足够深以至于它实际上很重要时 对象通常比数组更快 如果我通过类型转换来定义 效率会受到怎样的影响stdClass飞行中的对象 var object array one gt 1 two gt 2
  • 从PDF中提取图像,如何处理JBIG2编码

    我有一堆 PDF 文件 其中一些是纯文本 但有些完全或部分保存为 每页一个图像 因为它们是从扫描仪生成的 我需要提取所有图像包含在 PDF 中 然后分别检查每个图像 我能够提取大部分图像在 SO 中找到一个 python 脚本 请参阅问题