如何从图像中提取文本?
我说的不是扫描文件,而是各种各样的图像,比如当你在课堂上拍摄一张黑板的高清照片时,上面有漂亮的手写字;或者当你拍摄一本食谱书的一页并想要文本格式的食谱时。
有任何免费且开放的软件吗?
我尝试了 tesseract,但结果很糟糕。
答案1
tesseract-ocr
与其他所有产品相比,这款产品是最好的。要安装,请运行以下命令
sudo apt-get install tesseract-ocr
用法是tesseract filename.jpg output.txt
,然后它将生成output.txt
文件。
您可能考虑选择适当的语言。在这种情况下,您需要安装tesseract-ocr-LANG
包,LANG
三个字母在哪里ISO 639-2 语言代码。目前,18.04 repo 上有 123 种语言。然后使用例如:
tesseract mySpanishText.jpg output -l spa
答案2
从图像中提取文本的操作称为OCR
,Ubuntu 有一个专门用于光学字符识别 (OCR). 从该页面:
可用的 OCR 工具
Ubuntu Universe 存储库包含以下 OCR 工具:
- 戈克- 命令行 OCR
- 模糊的- spamassassin 插件用于检查图像附件
- libhocr0- 希伯来语OCR
- 奥克拉德- 光学字符识别程序
- 供料器- 文档布局分析和光学字符识别系统
- 章鱼- 文档分析和OCR系统
- tesseract-ocr
Ubuntu Multiverse 存储库还包含:
- 楔形文字- 多语言OCR系统
有些软件包已经过时了,但非官方的新鲜软件包可以在Alex_P PPA(PPA 添加代码:ppa:alex-p/notesalexp)。如果你从未使用过 PPA 检查如何从 PPA 添加软件。
编辑:如评论所示克拉拉OCR也存在,但它被 Hardy 卡住了,并且他们的网站最后更新于 2009 年。
答案3
答案4
利用tesseract-ocr
我们可以提取文本从图片。我测试过,gocr
效果不如tesseract-ocr
安装:
sudo apt-get install tesseract-ocr
Python
程序转换所有图像文件png当前目录中的扩展名为TXT文件
#!/usr/bin/env python3.10
import os
import subprocess
def list_files(path):
files = []
for name in os.listdir(path):
if os.path.isfile(os.path.join(path, name)):
files.append(os.path.join(path, name))
return files
def convertImageToText(img_file):
#process = subprocess.Popen(['tesseract', img_file,
# ''.join(img_file.rsplit('.png', 1))])
os.system(f"tesseract {img_file} {''.join(img_file.rsplit('.png', 1))}")
def startOperation():
list_file = list_files(".")
print(list_file)
for img_file in list_file:
if img_file.lower().split(".")[-1] == "png":
convertImageToText(img_file)
startOperation()