鱼C论坛

 找回密码
 立即注册
查看: 2160|回复: 26

[已解决]类似图片格式的PDF该如何转txt文件啊?

[复制链接]
发表于 2023-7-18 16:37:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
类似图片格式的PDF该如何转txt文件啊?就是pdf文件用微软edge打开,都不能搜索里面的文字,应该是图片格式的,麻烦各位高手帮忙!!!
最佳答案
2023-7-18 16:58:37
你需要的是一个 Optical Character Recognition (OCR) 工具来解析PDF中的图像并转换为文本。Python 中有一些库可以帮助你做到这一点,例如 `PDF2` 和 `pytesseract`。

首先,你需要安装以下库(如果尚未安装):

  1. pip install pdf2image
  2. pip install pytesseract
  3. pip install PIL
复制代码


此外,你还需要在你的系统上安装 [Tesseract ↗](https://github.com/tesseract-ocr/tesseract/wiki)。

然后,你可以使用以下代码将 PDF 文件中的图片转换为文本:

  1. from pdf2image import convert_from_path
  2. import pytesseract
  3. from PIL import Image
  4. import io

  5. # 你的 PDF 文件路径
  6. pdf_path = 'path_to_your_pdf.pdf'

  7. # 将 PDF 文件转换为 PIL Image 对象列表
  8. images = convert_from_path(pdf_path)

  9. # 初始化一个空字符串用于存储文本
  10. result_text = ''

  11. # 遍历所有的图片
  12. for i, img in enumerate(images):
  13.    
  14.     # 将图片转化为文本
  15.     text = pytesseract.image_to_string(img, lang='chi_sim')  # 使用'chi_sim'参数进行中文识别
  16.    
  17.     # 将识别后的文本添加到结果中
  18.     result_text += text

  19. # 将结果存储到 txt 文件中
  20. with open('output.txt', 'w', encoding='utf-8') as file:
  21.     file.write(result_text)
复制代码

注意:这只是一个基本的例子,可能需要根据你的需求进行适当的修改。在具体的环境中,你可能需要指定 Tesseract 的路径(通过 `pytesseract.pytesseract.tesseract_cmd`),并且在处理大型 PDF 文件时,你可能需要考虑内存管理。

求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-18 16:37:41 | 显示全部楼层
如果你遇到了类似图片格式的PDF,即PDF文件里的文字无法被搜索或复制,那么可能是因为这些文字被保存为图像形式。在这种情况下,你需要进行光学字符识别(OCR)来将图像转换为可编辑的文本。

有很多工具可以帮助你完成这个任务。以下是一种常见的方法:

1. 安装OCR软件:首先,你需要安装一款OCR软件,例如Adobe Acrobat、ABBYY FineReader或Tesseract OCR等。这些工具都能够将图像中的文字转换为可编辑的文本。

2. 打开PDF文件:使用所选择的OCR软件打开图片格式的PDF文件。在大多数软件中,你可以选择"打开"或"导入"选项,并选择需要转换的PDF文件。

3. 进行OCR转换:一旦打开了PDF文件,你需要运行OCR功能来进行转换。具体步骤可能会因软件而异,但通常你可以在工具栏或菜单中找到OCR选项。请按照软件提供的指示完成OCR转换。

4. 保存为文本文件:完成OCR转换后,你可以将结果保存为文本文件。在大多数OCR软件中,你可以选择"另存为"或"导出"选项,并选择保存为普通文本文件(例如.txt或.doc)。

请记住,OCR转换的准确性取决于图像质量和文字清晰度。因此,如果图片质量较低或文本不清晰,可能会导致转换结果不够准确。你可以尝试使用高分辨率的图像或调整OCR软件的设置来改善转换结果。另外,一些OCR软件还提供手动编辑功能,使你能够修正任何转换错误。

希望这些信息对你有帮助!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-18 16:37:51 | 显示全部楼层
你的问题是关于将类似图片格式的PDF转化为txt文件。这类PDF一般是经过图像扫描得到的,无法直接提取其中的文本信息。为了解决这个问题,你需要一个技术叫做OCR(Optical Character Recognition,光学字符识别)。

OCR技术可以将图片中的文本转化为可编辑、可搜索的格式。在网络上有许多工具和服务可以实现OCR,其中一些是免费的,比如Google的Tesseract。

以下是一个使用Tesseract将PDF转化为txt的基本步骤:

1. 首先,你需要安装Tesseract。在ubuntu系统中,可以通过以下命令安装:
  1. sudo apt install tesseract-ocr
复制代码
2. 然后,你需要将PDF文件转化为图片。可以使用ImageMagick工具,通过以下命令实现:
  1. convert -density 300 yourfile.pdf -depth 8 -strip -background white -alpha off yourfile.png
复制代码
这条命令将会生成一张或多张PNG图片,每张图片对应PDF文件的一页。

3. 最后,使用Tesseract进行OCR:
  1. tesseract yourfile.png outputbase
复制代码
这条命令会生成一个名为“outputbase.txt”的文件,其中包含了图片中的文本信息。

注意,这些步骤仅适用于英文PDF。如果你的PDF是中文的,你可能需要下载并安装适用于中文的Tesseract数据文件。

此外,这个方法并不是100%可靠,识别的准确度取决于原始文档的质量和清晰度。你可能需要手动检查和修改结果。

如果你不熟悉命令行操作或者对此过程有更高的要求,可以考虑使用付费的OCR服务,例如Adobe Acrobat Pro和ABBYY FineReader等。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-18 16:49:44 | 显示全部楼层
陶远航 发表于 2023-7-18 16:37
如果你遇到了类似图片格式的PDF,即PDF文件里的文字无法被搜索或复制,那么可能是因为这些文字被保存为图像 ...

python如何实现?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-18 16:51:50 | 显示全部楼层
isdkz 发表于 2023-7-18 16:37
你的问题是关于将类似图片格式的PDF转化为txt文件。这类PDF一般是经过图像扫描得到的,无法直接提取其中的 ...

那就是python还不能完美解决这个问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-18 16:57:48 | 显示全部楼层

你可以使用Python中的OCR(光学字符识别)库来将图片格式的PDF转换为可搜索的文本文件。OCR库可以帮助你将图片中的文字提取出来。

下面是一个使用Python的pytesseract库来进行OCR的示例代码:

首先,确保你已经安装了pytesseract库和Tesseract OCR引擎。你可以使用以下命令来安装它们:
  1. pip install pytesseract
  2. pip install tesseract
复制代码

然后,使用以下代码将PDF转换为文本文件:

  1. import pytesseract
  2. from pdf2image import convert_from_path

  3. def pdf_to_txt(pdf_path, txt_path):
  4.     # 将PDF转换为图像列表
  5.     images = convert_from_path(pdf_path)

  6.     # 创建一个空的文本文件
  7.     with open(txt_path, 'w') as f:
  8.         # 对每个图像应用OCR并将结果写入文本文件
  9.         for i, image in enumerate(images):
  10.             text = pytesseract.image_to_string(image, lang='eng')
  11.             f.write(f'Page {i+1}:\n\n{text}\n\n')

  12.     print(f'转换完成!文本文件保存在:{txt_path}')

  13. # 使用示例
  14. pdf_path = 'path/to/your/pdf.pdf'
  15. txt_path = 'path/to/save/txt/file.txt'
  16. pdf_to_txt(pdf_path, txt_path)
复制代码

请确保你已经正确指定了PDF文件的路径(pdf_path)以及要保存的文本文件的路径(txt_path)。运行后,程序将逐页读取图像、进行OCR,并将结果写入文本文件。

需要注意的是,OCR可能无法完美地识别所有文字,特别是对于较复杂的或低质量的图像。在使用OCR转换PDF时,偶尔可能会出现一些错误或误读的情况。如果需要更高的准确性,你可以尝试使用其他OCR库或在线OCR服务。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-18 16:58:37 | 显示全部楼层    本楼为最佳答案   
你需要的是一个 Optical Character Recognition (OCR) 工具来解析PDF中的图像并转换为文本。Python 中有一些库可以帮助你做到这一点,例如 `PDF2` 和 `pytesseract`。

首先,你需要安装以下库(如果尚未安装):

  1. pip install pdf2image
  2. pip install pytesseract
  3. pip install PIL
复制代码


此外,你还需要在你的系统上安装 [Tesseract ↗](https://github.com/tesseract-ocr/tesseract/wiki)。

然后,你可以使用以下代码将 PDF 文件中的图片转换为文本:

  1. from pdf2image import convert_from_path
  2. import pytesseract
  3. from PIL import Image
  4. import io

  5. # 你的 PDF 文件路径
  6. pdf_path = 'path_to_your_pdf.pdf'

  7. # 将 PDF 文件转换为 PIL Image 对象列表
  8. images = convert_from_path(pdf_path)

  9. # 初始化一个空字符串用于存储文本
  10. result_text = ''

  11. # 遍历所有的图片
  12. for i, img in enumerate(images):
  13.    
  14.     # 将图片转化为文本
  15.     text = pytesseract.image_to_string(img, lang='chi_sim')  # 使用'chi_sim'参数进行中文识别
  16.    
  17.     # 将识别后的文本添加到结果中
  18.     result_text += text

  19. # 将结果存储到 txt 文件中
  20. with open('output.txt', 'w', encoding='utf-8') as file:
  21.     file.write(result_text)
复制代码

注意:这只是一个基本的例子,可能需要根据你的需求进行适当的修改。在具体的环境中,你可能需要指定 Tesseract 的路径(通过 `pytesseract.pytesseract.tesseract_cmd`),并且在处理大型 PDF 文件时,你可能需要考虑内存管理。

求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-18 16:59:22 | 显示全部楼层
sfqxx 发表于 2023-7-18 16:58
你需要的是一个 Optical Character Recognition (OCR) 工具来解析PDF中的图像并转换为文本。Python 中有一 ...


你这个月想要超我是不可能了

虽然我被取消资格了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-18 17:29:55 | 显示全部楼层
陶远航 发表于 2023-7-18 16:59
你这个月想要超我是不可能了

虽然我被取消资格了

是吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-18 17:30:25 | 显示全部楼层

那你想怎么超过我
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-18 17:33:28 | 显示全部楼层
陶远航 发表于 2023-7-18 17:30
那你想怎么超过我


随便
不过你是脚本,这公平吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-18 17:34:09 | 显示全部楼层
sfqxx 发表于 2023-7-18 17:33
随便
不过你是脚本,这公平吗?

谁叫你没技术 写不出脚本
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-18 17:38:53 | 显示全部楼层
陶远航 发表于 2023-7-18 17:34
谁叫你没技术 写不出脚本

为什么要写脚本?你认为你写出脚本很厉害吗?对论坛很好吗?你不怕被封ip我怕

而且你的脚本也识别不出图片
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-18 17:40:23 | 显示全部楼层
sfqxx 发表于 2023-7-18 17:38
为什么要写脚本?你认为你写出脚本很厉害吗?对论坛很好吗?你不怕被封ip我怕

而且你的脚本也识别不出 ...

事实证明,我用脚本最佳比你多,拿事实说话好不好

有本事你不用脚本最佳比我多,那才叫厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-18 17:46:44 | 显示全部楼层
陶远航 发表于 2023-7-18 17:40
事实证明,我用脚本最佳比你多,拿事实说话好不好

有本事你不用脚本最佳比我多,那才叫厉害

哦?是吗?好。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-18 17:48:04 | 显示全部楼层
sfqxx 发表于 2023-7-18 17:46
哦?是吗?好。

劝你不要去举报那些未解决的远古求助帖以获取最佳答案数量
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-18 17:49:34 | 显示全部楼层
陶远航 发表于 2023-7-18 17:48
劝你不要去举报那些未解决的远古求助帖以获取最佳答案数量

不需要。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-18 17:50:19 | 显示全部楼层

那你要用什么方法 拿出来分享分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-18 20:23:35 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-18 21:38:11 | 显示全部楼层
陶远航 发表于 2023-7-18 16:57
你可以使用Python中的OCR(光学字符识别)库来将图片格式的PDF转换为可搜索的文本文件。OCR库可以帮助你 ...

import pytesseract
from pdf2image import convert_from_path

def pdf_to_txt(pdf_path, txt_path):
    # 将PDF转换为图像列表
    images = convert_from_path(pdf_path)

    # 创建一个空的文本文件
    with open(txt_path, 'w') as f:
        # 对每个图像应用OCR并将结果写入文本文件
        for i, image in enumerate(images):
            text = pytesseract.image_to_string(image, lang='eng')
            f.write(f'Page {i+1}:\n\n{text}\n\n')

    print(f'转换完成!文本文件保存在:{txt_path}')

# 使用示例
pdf_path = 'f:\\'+input('请输入要转换的文件名')+'.pdf'
txt_path = 'f:\\'+input('请输入要保存的文件名')+'.txt'
pdf_to_txt(pdf_path, txt_path)


错误信息
请输入要转换的文件名456
请输入要保存的文件名789
Traceback (most recent call last):
  File "C:\Users\ssq\AppData\Roaming\Python\Python39\site-packages\pdf2image\pdf2image.py", line 568, in pdfinfo_from_path
    proc = Popen(command, env=env, stdout=PIPE, stderr=PIPE)
  File "C:\Program Files (x86)\Python39-32\lib\subprocess.py", line 951, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "C:\Program Files (x86)\Python39-32\lib\subprocess.py", line 1420, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] 系统找不到指定的文件。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\Python\pdf2ocr.py", line 20, in <module>
    pdf_to_txt(pdf_path, txt_path)
  File "D:\Python\pdf2ocr.py", line 6, in pdf_to_txt
    images = convert_from_path(pdf_path)
  File "C:\Users\ssq\AppData\Roaming\Python\Python39\site-packages\pdf2image\pdf2image.py", line 127, in convert_from_path
    page_count = pdfinfo_from_path(
  File "C:\Users\ssq\AppData\Roaming\Python\Python39\site-packages\pdf2image\pdf2image.py", line 594, in pdfinfo_from_path
    raise PDFInfoNotInstalledError(
pdf2image.exceptions.PDFInfoNotInstalledError: Unable to get page count. Is poppler installed and in PATH?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-20 10:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表