![从扫描的文档中提取文本](https://linux22.com/image/1075349/%E4%BB%8E%E6%89%AB%E6%8F%8F%E7%9A%84%E6%96%87%E6%A1%A3%E4%B8%AD%E6%8F%90%E5%8F%96%E6%96%87%E6%9C%AC.png)
有没有办法从扫描的文档中选择文本?(输出为 jpg)Ubuntu 提供什么样的工具来完成这样的任务?是否有任何库可以用来代替预构建的软件二进制文件来做同样的事情?我尝试使用 Imagemagick 将其转换为 .pdf,然后尝试选择文本,但显然没有成功。
答案1
此类程序的名称是光学字符识别 (OCR)(光学字符识别)。该链接还提供了几个选择:
gocr - 命令行 OCR fuzzyocr - spamassassin 插件用于检查图像附件 libhocr0 - 希伯来语 OCR ocrad——光学字符识别程序 ocrfeeder - 文档布局分析和光学字符识别系统 ocropus - 文档分析和 OCR 系统 tesseract-ocr 楔形文字 - 多语言 OCR 系统
这表明 Tesseract(很老的教程)是其中更好的选择。所以试试吧。
答案2
不久前评估了 Ubuntu 中的各种 OCR 软件包,发现 Tesseract 是其中最不糟糕的(但也够糟糕了),并为 OCRing 编写了一个包装器脚本(因为 Tesseract 需要像 TIFF 这样的模糊输入格式)。这是我的~/bin/ocr
:
#!/bin/sh
# usage: ocr filename.jpg
if test -z "$1"; then
echo "usage: ocr filename.jpg [...]"
echo "needs imagemagick and tesseract-ocr"
echo "if tesseract fails, check if you've got tesseract-ocr-eng installed"
fi
tmpdir="$(mktemp -d)"
for fn in "$@"; do
convert "$fn" "$tmpdir/page.tif"
tesseract "$tmpdir/page.tif" "$tmpdir/page" 2>&1 | grep -v '^Tesseract Open Source OCR Engine$'
cat "$tmpdir/page.txt"
cp -i "$tmpdir/page.txt" "${fn%.jpg}.txt"
rm "$tmpdir/page.tif" "$tmpdir/page.txt"
done
rm -r "$tmpdir"
使用 GIMP 对图像进行预处理(使用阈值工具转换为黑白)似乎有很大帮助。
我希望从那时起情况有所改善。我最近在博客文章中看到了 OCR Feeder 这个名字,我会尝试一下。
答案3
Tesseract-ocr 包是命令行。如果您想要一个带有 GUI 的程序,我使用“gscan2pdf”,您可以在 Ubuntu 软件中心找到它。
在 gscan2pdf 中,您只需单击顶部附近的小扫描图标即可。我认为它为您提供了两三个选项,GOCR 效果不是很好,而 Tesseract 效果很好。选择 Tesseract,然后从此处单击相应的选项卡,以便找到分辨率设置。您最好的选择是 300 甚至 600,Tesseract 效果很好。
扫描质量差、扭曲或陈旧的文档无法很好地转换。祝您好运!
PS.. 我一直读到 Tesseract 只能读取 TIFF 图像。对我来说不是这种情况。我也可以导入 JPG 或 PNG。
PPS... 抱歉,我修改了!您也可以在软件中心尝试一下 OCRFeeder。不过我还没有试过。
答案4
我有 Linux Mint 17.2 x32 Cinnamon。这些步骤可能也适用于 Ubuntu 14.04 x32。
- 安装 Tesseract OCR sudo apt-get install -y tesseract-ocr tesseract-ocr-eng 您可以通过安装其他软件包来添加其他语言。此屏幕截图来自 synaptic: Synaptic 中的 Tesseract 语言包
使用 Tesseract
选项 1 - 通过命令行打开终端,然后转到保存图像文件(jpg,png)的文件夹并运行命令:
a) 将所有图像文件转换为文本
for i in *png; do b=`basename "$i" .png`; tesseract -l eng "$i" "$b" text; done
要将所有文本文件合并为一个,请运行命令cat *.txt >> all.txt
b) 将所有图像文件转换为 hocr 文件(使用 Firefox 打开)
for i in *png; do b=`basename "$i" .png`; tesseract -l eng "$i" "$b" hocr; done
选项 2 - 通过 GUI
a) 安装 gImageReader 并使用它
sudo add-apt-repository -y ppa:sandromani/gimagereader
sudo apt-get update
sudo apt-get install -y gimagereader
b) 第二个应用程序是 VietOCR。实际版本是 4.0,因此下载 VietOCR-4.0.zip
解压文件并用 Java 打开 VietOCR.jar:
通过 Java 打开 VietOCR 如果你没有安装 Java,那么你可以从存储库安装它,或者你可以安装官方的 Oracle Java 8。在 Ubuntu 14.04 中安装 Oracle Java 8 的步骤
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
sudo apt-get install oracle-java8-set-default
我推荐 VietOCR,因为它可以让您对 pdf 文件进行 OCR,批量转换也是一个选项。