免费 Ruby 库,将图像转换为文本和可搜索的 PDF
开源 Ruby OCR 库,使软件开发者能够执行光学字符识别,从扫描文档、图像甚至截图中提取文本
RTesseract 是什么?
光学字符识别(OCR)充当视觉媒体与数字数据之间的变革桥梁,使机器能够精确地从图像和扫描文档中提取文本。对于 Ruby 生态系统中的开发者来说,开源的 RTesseract 库提供了通往 Tesseract OCR 引擎强大功能的高效入口。Tesseract 最初由惠普开创,随后由谷歌进一步完善,已被广泛认可为图像转文本的首选解决方案。作为一个精细的接口,RTesseract 使得在任何 Ruby 项目中无缝集成 Tesseract OCR 成为可能,省去手动管理复杂命令行交互的需求,同时保持专业级文档数字化所需的准确性。
除了易用性之外,RTesseract 是一个多功能的 Ruby 库,旨在支持包括 PNG、JPEG、BMP 和 TIFF 在内的广泛图像格式。这种灵活性确保几乎可以兼容任何视觉来源,而它利用 Tesseract 的全局数据文件的能力,使得多语言文本识别具有高度可靠性。为了进一步提升数据完整性,该库为每个识别的单词提供置信度分数,允许开发者以编程方式评估 OCR 输出的质量。作为一个开源项目,RTesseract 为希望自动化数据提取工作流并构建更智能、具备文本感知能力的 Ruby 应用的团队提供了成本效益高、可定制且强大的解决方案。
开始使用 RTesseract
推荐的 RTesseract 安装方式是使用 Rubygems。请使用以下命令进行顺利安装。
通过 Rubygems 安装 RTesseract
$ gem install rtesseract 通过 GitHub 安装 RTesseract
git clone https://github.com/dannnylo/rtesseract.git 您可以从 GitHub 仓库下载已编译的共享库。
通过 Ruby API 将图像转换为文本
RTesseract 库让开发者能够轻松在 Ruby 应用中加载并将图像转换为文本。最直接的用例是将图像转换为文本字符串。只需几行代码,就可以从图像文件中提取文本。下面的代码示例加载图像并使用 Tesseract 进行处理,返回识别后的文本,作为 Ruby 字符串使用 Ruby 命令。
如何通过 Ruby API 加载图像并将其转换为文本?
require 'rtesseract'
image = RTesseract.new("path/to/your_image.jpg")
text = image.to_s
puts "Extracted Text: #{text}"
通过 Ruby 将图像转换为可搜索的 PDF
开源的 RTesseract 库已完整支持将图像转换为可搜索的 PDF,保留图像在 Ruby 应用中的布局和颜色。下面的示例演示了软件开发者如何使用 Ruby 命令加载并生成来自图像的可搜索 PDF 文档。
如何通过 Ruby 库将 JPEG 图像转换为可搜索的 PDF 文件?
require 'rtesseract'
image = RTesseract.new("path/to/my_image.jpg")
pdf_file = image.to_pdf # Returns an open file handle for the PDF
File.write("output.pdf", pdf_file.read)
Tesseract 的自定义配置
开源的 RTesseract 库允许软件专业人员配置 Tesseract 的设置,例如语言、页面分割模式、限制 OCR 为数字识别以及 OCR 引擎模式。这使您能够微调 OCR 过程以获得更高的准确性。您可以使用 config 选项自定义 Tesseract 的设置。在下面的示例中,psm(页面分割模式)设置为 6,oem(OCR 引擎模式)设置为 1。
如何在 Ruby 应用中自定义 Tesseract 的设置?
image = RTesseract.new('path/to/image.png', config: { psm: 6, oem: 1 })
text = image.to_s
puts text
多语言支持
如果您的图像包含特定语言的文本,您可以通过指定语言来提高准确性。该库支持的语言包括英语(默认)、德语、法语、意大利语、荷兰语、葡萄牙语、西班牙语、越南语等。请确保已使用 Tesseract 安装相应的语言包。以下示例中,lang 选项设置为 'fra'(法语)。您可以使用 Tesseract 支持的任何语言代码。
如何通过 Ruby 库将图像转换为其他语言的文本?
image = RTesseract.new('path/to/image.png', lang: 'fra') # French language
text = image.to_s
puts text