@FishC,想要一个调用AI进行OCR的工具
如题,想要一个调用AI进行PDF文档OCR的工具,目前现成的有哪些推荐?? 哈哈,鱼油想要个能让PDF瞬间“识字”的神器呀!别担心,这就给你推荐几个靠谱的OCR工具,让你的PDF像鲨鱼遇到水一样畅快!1. **Adobe Acrobat Pro DC**:这个可是OCR界的“大白鲨”!功能强大,能识别多种语言,还能进行批量处理。不过它的价格有点“深海”,适合预算充足的鱼油。
2. **ABBYY FineReader**:这款就像是OCR工具里的“章鱼”,多功能且灵活。它的识别率和准确性非常高,支持多种文件格式转换。价格比Adobe略低,性价比很高。
3. **Tesseract OCR**:这个是开源的工具,像是“虾米”一样小巧但功能强大。需要一点编程基础,但完全免费,适合DIY爱好者。
4. **Google Drive**:没错,谷歌云盘也能做OCR!上传PDF到谷歌云盘,然后右键选择“用Google Docs打开”,它会自动进行OCR处理。简直是“鲶鱼效应”——简单方便还免费。
5. **Microsoft OneNote**:这是微软家的“海豚”级别工具。将PDF导入OneNote,它能自动识别文字,支持多设备同步,适合用微软生态的鱼油们。
6. **Smallpdf**:在线工具中的“电鳗”,速度快而且操作简单。打开网站,上传PDF,选择OCR功能,一键搞定,非常适合懒癌晚期的鱼油。
7. **PDF Candy**:这款工具如同“糖果鱼”,操作简单,界面友好,免费在线使用。OCR效果也不错,适合日常小规模处理。
选择合适的OCR工具,鱼油可以根据自己的需求和预算来决定。如果你喜欢折腾,Tesseract OCR是个不错的选择;如果你追求简单快捷,Google Drive和Smallpdf都能满足你的需求;而如果你是土豪鱼油,那就直接上Adobe Acrobat Pro DC吧!
希望这些推荐能帮到你,让你的PDF文档秒变可编辑!加油,冲鸭!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-7-16 09:56
哈哈,鱼油想要个能让PDF瞬间“识字”的神器呀!别担心,这就给你推荐几个靠谱的OCR工具,让你的PDF像鲨鱼 ...
我想要免费的,小一点的工具,不要在线工具。 shadowmage 发表于 2024-07-16 10:04
我想要免费的,小一点的工具,不要在线工具。
哈哈,好嘞,鱼油想要免费的又小巧的工具对吧~ 那么像开源神器Tesseract OCR和简单易用的Microsoft OneNote绝对能满足你的需求!来,我详细给你介绍一下这两款工具,帮你在“深海”里找到实用的“珊瑚”!
### 1. **Tesseract OCR**
这可是开源界的“王者榴莲”,虽然外表有点扎手,但里面绝对是香甜可口的。整个工具非常小巧,免费且支持多种语言。
**使用方法:**
1. **安装Tesseract OCR**:
- Windows用户可以下载它的安装包并安装:(https://github.com/tesseract-ocr/tesseract/releases)
- Mac用户可以通过Homebrew安装,命令如下:
brew install tesseract
2. **安装Python库(可选)**:
如果你习惯用Python处理数据,可以安装`pytesseract`,这样可以通过Python脚本进行OCR处理。
pip install pytesseract
3. **进行OCR处理**:
可以直接在命令行使用Tesseract,也可以写Python脚本来调用。
- 命令行使用:
tesseract your_pdf_file.pdf output.txt
- 使用Python脚本:
from PIL import Image
import pytesseract
# 打开图片
img = Image.open('your_image_file.png')
# 进行OCR识别
text = pytesseract.image_to_string(img)
print(text)
### 2. **Microsoft OneNote**
你知道吗?微软的OneNote也是个隐藏的OCR高手!而且完全免费,跟随Office套件一起安装,非常轻便。
**使用方法:**
1. **安装OneNote**:
OneNote 是微软办公套件的一部分,无论你用的是Windows还是Mac,都可以通过安装Office来获得OneNote。如果你已经有Office套件,那就直接在应用里打开OneNote吧。
2. **导入PDF文件**:
将你的PDF转换成图片(可以截图或者使用其他软件转换)。然后在OneNote中插入这些图片。
3. **进行OCR识别**:
右键点击插入的图片,选择“复制图片中的文本”。OneNote会自动进行OCR处理,并将识别结果放入剪贴板,你就可以粘贴到任何地方使用啦。
这两款工具都不需要联网,功能强大又小巧,适合鱼油你这种追求高效又想保持“环保”的需求。希望这些建议对你有帮助,让你的PDF文档轻松“识字”不是梦!快去试试看吧,加油!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 Tesseract OCR FishC 发表于 2024-7-16 10:05
哈哈,好嘞,鱼油想要免费的又小巧的工具对吧~ 那么像开源神器Tesseract OCR和简单易用的Microsoft One ...
可以给我编写一个Python程序,对指定路径的指定PDF文件进行OCR吗?
程序是这样:
1,显示“请输入需要OCR的文件路径”
2,此时由用户输入形如“D:\downloads\a.pdf”的文件及路径
3,显示“请输入OCR后的文字TXT存储路径”
4,此时由用户输入形如“D:\downloads\out.txt”的路径
5,对D:\downloads\a.pdf 文件进行OCR,结果输出到D:\downloads\out.txt。 shadowmage 发表于 2024-07-16 10:15
可以给我编写一个Python程序,对指定路径的指定PDF文 ...
哈哈,鱼油的要求果然很具体呀!没问题,马上给你整一个简单易懂的Python程序,使用Tesseract OCR来实现对PDF文件的文字识别,并将结果输出到指定的TXT文件中。
在开始之前,你需要确保已经安装了以下软件和库:
1. **Tesseract OCR**:可以通过(https://github.com/tesseract-ocr/tesseract/releases)下载并安装,也可通过包管理工具安装:
- Windows: 下载并安装 `tesseract-ocr-w64-setup-vx.x.x.exe`
- MacOS: 通过Homebrew安装 `brew install tesseract`
2. **Python库**:
- PyPDF2: 用于读取PDF文件
- pytesseract: 用于调用Tesseract OCR
- PIL (Pillow): 用于图像处理
安装这些库的命令:
pip install PyPDF2 pytesseract pillow
好了,现在我们正式开始编写代码了:
import os
import sys
import PyPDF2
import pytesseract
from PIL import Image
from pdf2image import convert_from_path
# 询问用户输入需要OCR的文件路径
pdf_path = input("请输入需要OCR的文件路径:")
# 检查文件是否存在
if not os.path.isfile(pdf_path):
print(f"错误:文件 {pdf_path} 不存在。")
sys.exit(1)
# 询问用户输入OCR结果TXT存储路径
txt_path = input("请输入OCR后的文字TXT存储路径:")
# 将PDF转换为图像
pages = convert_from_path(pdf_path)
text = ''
# 对每一页进行OCR
for page_num, page in enumerate(pages):
# 调用Tesseract OCR进行识别
page_text = pytesseract.image_to_string(page)
text += f"\n--- Page {page_num + 1} ---\n{page_text}\n"
# 将识别结果保存到TXT文件
with open(txt_path, 'w', encoding='utf-8') as txt_file:
txt_file.write(text)
print(f"OCR 完成!结果已保存到 {txt_path}")
### 代码说明:
1. **导入所需库**:`PyPDF2` 用于读取PDF文件,`pytesseract` 用于调用Tesseract OCR,`Pillow` 用于图像处理,`convert_from_path` 用于将PDF页面转换为图像。
2. **获取用户输入**:让用户输入PDF文件路径和输出的TXT文件路径。
3. **PDF转图像**:通过`convert_from_path`将PDF文件的每一页转换为图像。
4. **OCR处理**:遍历每一页图像,调用`pytesseract.image_to_string`进行文字识别,并将结果累积到`text`变量中。
5. **保存结果**:将累积的文字结果写入用户指定的TXT文件中。
这段代码会按照你描述的步骤接受用户输入,并完成OCR操作,将结果保存到指定的TXT文件。希望这个工具能帮到你,让你的PDF文档“开口说话”!加油,冲鸭!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 某一个“天” 发表于 2024-7-16 10:09
Tesseract OCR
谢谢,虽然我让FishC给我搞了个代码,但还是万分感谢 shadowmage 发表于 2024-07-16 10:30
谢谢,虽然我让FishC给我搞了个代码,但还是万分感谢
哈哈,不用客气!FishC 的码鱼们果然效率高超~ 不过我依旧很高兴能帮到你!如果在使用过程中有任何问题,或者需要进一步的优化和功能扩展,随时来找我“打扰”就好。
在此,我送上一个小小的祝福:愿你的代码都没有 bug,愿你的 PDF 都能“开口说话”!祝你学习、工作顺利,冲鸭,鱼油!
如果以后还有任何技术问题或者需要搞笑段子,记得回来找我哦~ 加油,祝愉快!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-7-16 10:16
哈哈,鱼油的要求果然很具体呀!没问题,马上给你整一个简单易懂的Python程序,使用Tesseract OCR来实 ...
刚知道,PyPDF2库已经不更新了,能否用PyMuPDF库替代,重新编一个代码 shadowmage 发表于 2024-07-16 10:37
刚知道,PyPDF2库已经不更新了,能否用PyMuPDF库替代 ...
哈哈,鱼油信息更新飞快啊!PyPDF2虽然老了,但是我们有新的强力工具——**PyMuPDF** 也叫 **fitz**。这可是个“年轻活力的鲨鱼”,功能更丰富,还更高效。
好的,现在我们用 PyMuPDF 来替换 PyPDF2,重新编写一个完整的代码:
首先,你需要安装以下库:
pip install pymupdf pytesseract pillow pdf2image
接下来是代码部分:
import os
import sys
import fitz# PyMuPDF
import pytesseract
from PIL import Image
from pdf2image import convert_from_path
def pdf_to_images(pdf_path):
"""将 PDF 每一页转换为图像"""
pdf_document = fitz.open(pdf_path)
images = []
for page_num in range(len(pdf_document)):
page = pdf_document.load_page(page_num)
pix = page.get_pixmap()
img = Image.frombytes("RGB", , pix.samples)
images.append(img)
return images
# 询问用户输入需要OCR的文件路径
pdf_path = input("请输入需要OCR的文件路径:")
# 检查文件是否存在
if not os.path.isfile(pdf_path):
print(f"错误:文件 {pdf_path} 不存在。")
sys.exit(1)
# 询问用户输入OCR结果TXT存储路径
txt_path = input("请输入OCR后的文字TXT存储路径:")
try:
# 将PDF转换为图像
pages = pdf_to_images(pdf_path)
except Exception as e:
print(f"错误:无法将 PDF 转换为图像 - {e}")
sys.exit(1)
text = ''
# 对每一页进行OCR
for page_num, page in enumerate(pages):
try:
# 调用Tesseract OCR进行识别
page_text = pytesseract.image_to_string(page)
text += f"\n--- Page {page_num + 1} ---\n{page_text}\n"
except Exception as e:
print(f"错误:无法对第 {page_num + 1} 页进行 OCR - {e}")
try:
# 将识别结果保存到TXT文件
with open(txt_path, 'w', encoding='utf-8') as txt_file:
txt_file.write(text)
print(f"OCR 完成!结果已保存到 {txt_path}")
except Exception as e:
print(f"错误:无法将结果保存到 {txt_path} - {e}")
### 代码说明:
1. **导入所需库**:`fitz`(即 PyMuPDF) 用于处理 PDF 文件,`pytesseract` 用于调用 Tesseract OCR,`Pillow` 用于图像处理。
2. **函数 pdf_to_images**:将PDF的每一页转换为图像。使用 PyMuPDF 的 `get_pixmap` 方法获取页面图像。
3. **获取用户输入**:让用户输入 PDF 文件路径和输出的 TXT 文件路径。
4. **PDF 转图像**:通过调用 `pdf_to_images` 函数将 PDF 文件的每一页转换为图像。
5. **OCR 处理**:遍历每一页图像,调用 `pytesseract.image_to_string` 进行文字识别,并将结果累积到 `text` 变量中。
6. **保存结果**:将累积的文字结果写入用户指定的 TXT 文件中。
现在,你可以试试这个用 PyMuPDF 实现的 OCR 工具了,希望它能帮你轻松搞定 PDF 的文字识别!加油,冲鸭,鱼油!如果有任何问题,尽管来找我,咱们一起搞定它!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-7-16 10:38
哈哈,鱼油信息更新飞快啊!PyPDF2虽然老了,但是我们有新的强力工具——**PyMuPDF** 也叫 **fitz**。 ...
免费的面包 只能是凑合着吃 wp231957 发表于 2024-07-16 14:02
免费的面包 只能是凑合着吃
哈哈,鱼油说得对!免费的面包虽然不一定是最好的,但总算能填饱肚子嘛~ 那我们就来看看如何用“免费的面包”工具实现OCR。我们要用到PyMuPDF(fitz)、pytesseract、Pillow和pdf2image这些开源库。
让我们先来看一看如何使用这些工具重新编写代码吧。
首先,确保你已经安装了必要的Python库:
pip install pymupdf pytesseract pillow pdf2image
然后我们编写代码,将PDF文档中的文字提取出来:
import os
import sys
import fitz# PyMuPDF
import pytesseract
from PIL import Image
def pdf_to_images(pdf_path):
"""将 PDF 每一页转换为图像"""
pdf_document = fitz.open(pdf_path)
images = []
for page_num in range(len(pdf_document)):
page = pdf_document.load_page(page_num)
pix = page.get_pixmap()
img = Image.frombytes("RGB", , pix.samples)
images.append(img)
return images
def main():
# 询问用户输入需要OCR的文件路径
pdf_path = input("请输入需要OCR的文件路径:")
# 检查文件是否存在
if not os.path.isfile(pdf_path):
print(f"错误:文件 {pdf_path} 不存在。")
sys.exit(1)
# 询问用户输入OCR结果TXT存储路径
txt_path = input("请输入OCR后的文字TXT存储路径:")
try:
# 将PDF转换为图像
pages = pdf_to_images(pdf_path)
except Exception as e:
print(f"错误:无法将 PDF 转换为图像 - {e}")
sys.exit(1)
text = ''
# 对每一页进行OCR
for page_num, page in enumerate(pages):
try:
# 调用Tesseract OCR进行识别
page_text = pytesseract.image_to_string(page)
text += f"\n--- Page {page_num + 1} ---\n{page_text}\n"
except Exception as e:
print(f"错误:无法对第 {page_num + 1} 页进行 OCR - {e}")
try:
# 将识别结果保存到TXT文件
with open(txt_path, 'w', encoding='utf-8') as txt_file:
txt_file.write(text)
print(f"OCR 完成!结果已保存到 {txt_path}")
except Exception as e:
print(f"错误:无法将结果保存到 {txt_path} - {e}")
if __name__ == "__main__":
main()
### 代码要点解析:
1. **导入所需库**:我们用到了 `fitz`(即 PyMuPDF)处理PDF文件,用 `pytesseract` 调用 Tesseract OCR,还用了 `Pillow` 处理图像。
2. **函数 `pdf_to_images`**:将PDF的一页页内容转换成图像格式,供后续OCR处理。
3. **用户输入**:分别让用户输入PDF文件路径和输出的TXT文件路径。
4. **PDF转图像**:通过调用 `pdf_to_images` 函数把PDF文档转换成一页页图像。
5. **OCR处理**:遍历每张图像,用 `pytesseract.image_to_string` 识别文字,并累积到变量 `text` 中。
6. **保存结果**:将OCR结果写入用户指定的TXT文件。
这样,鱼油就可以免费获得PDF文档的文字内容啦。如果过程中遇到任何问题或有进一步需求,尽管告诉我,我们一起搞定它!加油,冲鸭!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-7-16 14:03
哈哈,鱼油说得对!免费的面包虽然不一定是最好的,但总算能填饱肚子嘛~ 那我们就来看看如何用“免费的 ...
在输出“错误:无法对第x页进行OCR”后,我需要把这一页记录下来,然后跳过无法OCR的页面,继续OCR下一页,直至所有页面OCR完毕。把无法OCR的页码输出给我。 shadowmage 发表于 2024-07-16 14:50
在输出“错误:无法对第x页进行OCR”后,我需要把这一 ...
没问题,鱼油,我们可以通过在捕获异常的部分记录无法识别的页码,并在最后输出这些页码。这样我们就能继续处理其他页面,并且知道哪些页面出了问题。下面是调整后的代码:
import fitz# PyMuPDF
from PIL import Image
import pytesseract
from pdf2image import convert_from_path
def ocr_pdf_to_text(pdf_path, txt_output_path):
try:
# 打开PDF文件
pdf_document = fitz.open(pdf_path)
num_pages = pdf_document.page_count
print(f"PDF共有 {num_pages} 页")
# 存储未能OCR的页码
failed_pages = []
with open(txt_output_path, 'w', encoding='utf-8') as output_file:
for page_num in range(num_pages):
try:
# 获取该页的Pixmap图像
page = pdf_document.load_page(page_num)
pix = page.get_pixmap()
# 将PixMap转换为Image对象
img = Image.frombytes("RGB", , pix.samples)
# 使用tesseract进行OCR
text = pytesseract.image_to_string(img, lang='chi_sim+eng')# 根据实际需要选择语言包
# 追加文本到输出文件
output_file.write(text)
output_file.write("\n")
except Exception as e:
print(f"错误:无法对第 {page_num + 1} 页进行OCR - {str(e)}")
failed_pages.append(page_num + 1)
# 输出无法OCR的页码
if failed_pages:
print(f"无法进行OCR的页面有:{failed_pages}")
else:
print("所有页面均成功OCR!")
except Exception as e:
print(f"程序出错:{str(e)}")
if __name__ == "__main__":
pdf_path = input("请输入需要OCR的文件路径:")
txt_output_path = input("请输入OCR后的文字TXT存储路径:")
ocr_pdf_to_text(pdf_path, txt_output_path)
这个代码段里,咱们对每一页都尝试进行OCR,如果发生错误,就记录下当前页码,并在完成所有页面处理后统一输出无法OCR的页码。
就是这么简单!祝你使用愉快,有问题随时来找我哟~
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 可惜,设置最佳答案太早了,7楼已经设了。实际15楼才应该是最佳答案 shadowmage 发表于 2024-07-16 14:58
可惜,设置最佳答案太早了,7楼已经设了。实际15楼才 ...
没关系,咱们继续优化代码。以下是根据你的需求调整后的代码,实现对指定路径的PDF文件进行OCR,并将结果保存到指定的TXT文件中,同时记录无法进行OCR的页码:
import fitz# PyMuPDF
import pytesseract
from PIL import Image
import io
# 确保你已经安装了这些库
# pip install pymupdf pytesseract pillow
def pdf_to_text(pdf_path, txt_path):
doc = fitz.open(pdf_path)
error_pages = []
with open(txt_path, 'w', encoding='utf-8') as output_file:
for page_num in range(len(doc)):
try:
page = doc.load_page(page_num)
pix = page.get_pixmap()
img = Image.open(io.BytesIO(pix.tobytes("png")))
text = pytesseract.image_to_string(img, lang="eng")
output_file.write(f"Page {page_num + 1}\n")
output_file.write(text)
output_file.write("\n\n")
except Exception as e:
error_pages.append(page_num + 1)
print(f"错误:无法对第 {page_num + 1} 页进行OCR")
continue
if error_pages:
print("无法进行OCR的页码:", error_pages)
def main():
pdf_path = input("请输入需要OCR的文件路径:")
txt_path = input("请输入OCR后的文字TXT存储路径:")
pdf_to_text(pdf_path, txt_path)
if __name__ == "__main__":
main()
### 说明:
1. **导入必要的库**:我们使用 `fitz`(PyMuPDF)来处理PDF,`pytesseract` 来做OCR,`PIL`(Pillow)来处理图像。
2. **异常处理和记录页码**:在每一页OCR处理时,如果发生异常,我们记录下该页码并继续处理下一页。
3. **输出无法OCR的页码**:最后输出所有无法进行OCR的页码。
### 如何使用:
1. 确保你安装了所需的库:
pip install pymupdf pytesseract pillow
2. 如果你使用的是Windows,需要安装Tesseract OCR,并将其路径添加到系统的环境变量中。可以从 [这里](https://github.com/tesseract-ocr/tesseract) 下载。
3. 运行这个Python脚本,按照提示输入PDF文件路径和输出TXT文件路径即可。
希望这个版本能更好地满足你的需求!有任何问题,随时来找我!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-7-16 14:59
没关系,咱们继续优化代码。以下是根据你的需求调整后的代码,实现对指定路径的PDF文件进行OCR,并将结 ...
github这网站,老是上不去,有没有什么加速镜像? shadowmage 发表于 2024-07-17 13:34
github这网站,老是上不去,有没有什么加速镜像?
哈哈,鱼油这个问题问得好!GitHub 是代码交流的大本营,但有时候确实访问缓慢。幸运的是,有一些镜像网站可以帮助你更快地访问 GitHub 内容。
以下是一些常用的 GitHub 加速镜像:
1. **GitHub 镜像加速站点**:这些站点通过代理等方式加速 GitHub 的访问,不过请务必在使用时注意安全性和隐私。
- (https://ghproxy.com/)
- (https://fastgit.org/)
2. **CNPM 镜像**:这是国内的一个 npm 镜像网站,同时提供 GitHub 仓库的加速服务。
- (https://github.com.cnpmjs.org/)
3. **Gitee**:虽然 Gitee 是另一个托管平台,但有些项目会同步发布到 Gitee 上,可以看看是否有你需要的项目。
- (https://gitee.com/)
不过,使用这些镜像时要注意,尽量选择比较可靠和知名的镜像,以避免潜在的安全问题。
好了,接下来我继续给你提供更新后的Python OCR程序代码:
import fitz# PyMuPDF
import pytesseract
from PIL import Image
def pdf_to_images(pdf_path):
""" 将 PDF 转为图像 """
doc = fitz.open(pdf_path)
images = []
for page_number in range(len(doc)):
page = doc.load_page(page_number)
pix = page.get_pixmap()
img = Image.frombytes("RGB", , pix.samples)
images.append(img)
return images
def process_ocr(pdf_path, txt_path):
""" 对 PDF 进行 OCR,并将结果写入指定的 TXT 文件 """
images = pdf_to_images(pdf_path)
failed_pages = []
with open(txt_path, 'w', encoding='utf-8') as f:
for idx, img in enumerate(images):
try:
text = pytesseract.image_to_string(img)
f.write(f"Page {idx + 1}:\n{text}\n\n")
except Exception as e:
print(f"错误:无法对第{idx + 1}页进行OCR,原因:{str(e)}")
failed_pages.append(idx + 1)
if failed_pages:
print(f"无法进行OCR的页码: {failed_pages}")
if __name__ == "__main__":
pdf_path = input("请输入需要OCR的文件路径: ")
txt_path = input("请输入OCR后的文字TXT存储路径: ")
process_ocr(pdf_path, txt_path)
print("OCR 处理完成!")
这个代码会:
1. 显示“请输入需要OCR的文件路径”
2. 用户输入路径和文件名
3. 显示“请输入OCR后的文字TXT存储路径”
4. 用户输入路径
5. 对 PDF 进行 OCR,输出到指定的 TXT 文件,并记录无法识别的页码
希望这个代码能完美满足你的需求!如果还有任何问题或需要进一步优化,随时欢迎找我哦~
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-7-16 09:56
哈哈,鱼油想要个能让PDF瞬间“识字”的神器呀!别担心,这就给你推荐几个靠谱的OCR工具,让你的PDF像鲨鱼 ...
ChatGPT4.0教程
页:
[1]
2