在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
光学字符识别(光学字符识别)是帮助将扫描的纸质文档、PDF 文件或相机捕捉的高分辨率图像等文档处理成可打印和可搜索数据的技术。 通过识别提取的文本特征和形态操作,可以光学字符识别自动输入数据,从而加快信息处理过程并提高准确性。
OCR 扫描文档,识别字母、数字或符号等字符,并将其翻译成机器可读的格式。 其用途包括图书数字化、表单处理、文档工作流程自动化以及改善盲人的无障碍环境。 随着深度学习和人工智能的发展,OCR 引擎在识别复杂格式(如手写、多语言文档甚至劣质图像)时变得非常准确。
常用的 OCR 工具和库,如 EasyOCR、Tesseract OCR、Keras-OCR 和 IronOCR,通常用于将此功能集成到现代应用程序中。
EasyOCR是一个开源 Python 库,旨在使从图像中提取文本变得简单高效。 它使用深度学习技术,支持 80 多种语言,包括拉丁语、中文、阿拉伯语和其他许多语言。 EasyOCR Tesseract 的 API 非常简单,任何人都可以轻松地将 OCR 预测功能集成到自己的应用程序中,无需过多设置。有了 EasyOCR Tesseract,人们可以进行简单的文档数字化、车牌识别,甚至从图片中提取文本。
破损图片 添加自 Pixabay,请从您的文件中选择或将图片拖放到此处。
EasyOCR 以识别印刷和手写文本而闻名。 大多数其他 OCR 解决方案都不提供此功能。 它还能处理多行文本,并适用于任何类型的图片,即使是低质量的图片。 因此,译文必须适合现实世界的使用情况,只依赖于少数几个依赖项。 它是轻量级的,无需 GPU 即可在现代硬件上高效运行。 这使得 EasyOCR 对可能需要灵活 OCR 功能的开发人员颇具吸引力。
EasyOCR 拥有大量功能,是一款功能全面、真正强大的 OCR 工具:
可识别 80 多种语言: EasyOCR 可识别中文、日文、韩文、阿拉伯文、拉丁文以及更多书写复杂的单词和复杂的语言。
它既能识别手写文本,也能识别图像中的印刷文本,因此进一步扩大了潜在的应用范围。
基于高级深度学习: 识别支持高级深度学习技术的强大算法,具有较高的性能和精度,特别是在有噪声或扭曲的文本布局和图像中。
简单的应用程序接口(API): 使用非常简单易用的应用程序接口(API),用户无需进一步配置即可在应用程序中快速获得 OCR 功能。
多行文本检测: 识别多行文本; 适用于文档、书籍或多行标志。
轻量级: 在 CPU 上运行良好,并可利用 GPU 提高性能,但仍可在基本硬件上运行。
图像预处理: 持有主要的图像预处理工具,用于从嘈杂或低分辨率图像中清理 OCR 输出。
部署灵活: 可在多种平台上运行,嵌入 Python 应用程序相对简单。
可以通过 Python 的软件包管理器 pip 安装 EasyOCR。 首先,确保满足所有的依赖关系。
首先是 PyTorch 库:torch 和 torchvision。 Torch 和 torchvision 可与 EasyOCR 一起安装:
安装 EasyOCR: 安装时,只需打开终端或命令行并输入以下命令即可:
pip install easyocr
pip install easyocr
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'pip install easyocr
破损图片 添加自 Pixabay,请从您的文件中选择或将图片拖放到此处。
安装 PyTorch(如果未安装(由 EasyOCR 要求): EasyOCR 在 PyTorch 上运行。 如果在您的环境中自动安装,请安装特定版本; 按照官方 PyTorch 安装向导.
现在,您可以使用 EasyOCR 完成文本提取任务了。
import easyocr
import matplotlib.pyplot as plt
import cv2
# Initialize the EasyOCR reader
reader = easyocr.Reader(['en']) # Specify the languages (e.g., 'en' for English)
# Load the image
image_path = 'sample_image.png' # Path to the image
image = cv2.imread(image_path)
# Perform OCR on the image
result = reader.readtext(image_path)
# Print the detected text and its bounding boxes
for (bbox, text, prob) in result:
print(f"Detected Text: {text} (Confidence: {prob:.4f})")
# Optionally, display the image with bounding boxes around the detected text
for (bbox, text, prob) in result:
# Unpack the bounding box
top_left, top_right, bottom_right, bottom_left = bbox
top_left = tuple(map(int, top_left))
bottom_right = tuple(map(int, bottom_right))
# Draw a rectangle around the text
cv2.rectangle(image, top_left, bottom_right, (0, 255, 0), 2)
# Convert the image to RGB (since OpenCV loads images in BGR by default)
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# Display the image with bounding boxes
plt.imshow(image_rgb)
plt.axis('off')
plt.show()
import easyocr
import matplotlib.pyplot as plt
import cv2
# Initialize the EasyOCR reader
reader = easyocr.Reader(['en']) # Specify the languages (e.g., 'en' for English)
# Load the image
image_path = 'sample_image.png' # Path to the image
image = cv2.imread(image_path)
# Perform OCR on the image
result = reader.readtext(image_path)
# Print the detected text and its bounding boxes
for (bbox, text, prob) in result:
print(f"Detected Text: {text} (Confidence: {prob:.4f})")
# Optionally, display the image with bounding boxes around the detected text
for (bbox, text, prob) in result:
# Unpack the bounding box
top_left, top_right, bottom_right, bottom_left = bbox
top_left = tuple(map(int, top_left))
bottom_right = tuple(map(int, bottom_right))
# Draw a rectangle around the text
cv2.rectangle(image, top_left, bottom_right, (0, 255, 0), 2)
# Convert the image to RGB (since OpenCV loads images in BGR by default)
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# Display the image with bounding boxes
plt.imshow(image_rgb)
plt.axis('off')
plt.show()
#Initialize the EasyOCR reader
#Load the image
#Perform OCR on the image
#Print the detected text and its bounding boxes
#Optionally, display the image with bounding boxes around the detected text
#Unpack the bounding box
#Draw a rectangle around the text
#Convert the image to RGB (since OpenCV loads images in BGR by default)
#Display the image with bounding boxes
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'import easyocr import TryCast(matplotlib.pyplot, plt) import cv2 reader = easyocr.Reader(['en']) # Specify the languages(e.g., 'en' for English) image_path = 'sample_image.png' # Path @to the image image = cv2.imread(image_path) result = reader.readtext(image_path) for(bbox, text, prob) in result: print(f"Detected Text: {text} (Confidence: {prob:.4f})") for(bbox, text, prob) in result: top_left, top_right, bottom_right, bottom_left = bbox top_left = tuple(map(int, top_left)) bottom_right = tuple(map(int, bottom_right)) cv2.rectangle(image, top_left, bottom_right, (0, 255, 0), 2) image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) plt.imshow(image_rgb) plt.axis('off') plt.show()
下图是上述代码生成的输出结果。
Tesseract该工具是最流行的开源光学字符识别引擎之一,具有一系列超参数选项。 可使用 pytesseract 从 Python 应用程序中访问。 Tesseract 由惠普公司开始开发,后来由谷歌进行了改进。 它具有很强的通用性,可以提取 100 多种语言的图像和 PDF 中的文本。 Python 包装器允许通过 pytesseract 与 Tesseract 进行无缝交互。
Tesseract 是机器印刷和文本检测与提取领域的领导者,具有多语言识别能力,支持新字体训练,还能进行文本布局分析。 它主要支持打印文本,除此之外,它对手写文本的处理也相当不错,但准确度不高。 Tesseract 在文档数字化、扫描收据、自动数据录入和实现可搜索 PDF 中得到了广泛应用。 对于从事 OCR 相关任务的开发人员来说,Python 和 Tesseract 的灵活性是一个相当强大的组合。
pytesseract 的一些最重要的功能包括
多语言支持: Tesseract 可读取 100 多种语言,pytesseract 在 Python 脚本中提供了相当简便的多语言 OCR 支持。它还支持对其他自定义字体或语言的训练,从而将功能扩展到更多语言或字体。
用于图像到文本的转换:pytesseract 可从 PNG、JPEG、BMP、GIF 和 TIFF 等多种格式的图像中提取文本内容,在多种不同类型的来源上运行 OCR。
从 PDF 转换为可搜索 PDF: Tesseract 将读取 PDF 文件的文本,并使 PDF 可搜索。 用户可以查找扫描文件的内容并编制索引。
它可以阅读复杂的文本布局,包括多栏文档、表格以及文本和图片的混合内容。 因此,它可以更准确地从非标准布局中提取文本。
手写文本识别能力: pytesseract 主要针对印刷文本; 然而,准确度取决于所使用手写体的质量和清晰度。
自定义配置: 用户可以通过 pytesseract 传递自定义的 Tesseract 配置参数,以便根据需要微调 OCR 性能以及适当的识别模式或图像,为文本赋予特定属性。
简单的应用程序接口(API): pytesseract 上的应用程序接口非常简单,因此开发人员只需编写较少的代码,就能轻松地将 OCR 添加到他们的 Python 项目中。
该库可与其他库(如 OpenCV PIL)配合使用。(Python 图像库)您可以使用.NET、Java 或 NumPy 来处理图像预处理,以提高 OCR 的准确性。
安装 Tesseract 后,使用 pip 安装 pytesseract 软件包:
pip install pytesseract
pip install pytesseract
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'pip install pytesseract
import pytesseract
from PIL import Image
pytesseract.pytesseract.tesseract_cmd = r'<full_path_to_your_tesseract_executable>'
# Example: Read text from an image
image = Image.open('sample_image.png')
text = pytesseract.image_to_string(image)
print(text)
import pytesseract
from PIL import Image
pytesseract.pytesseract.tesseract_cmd = r'<full_path_to_your_tesseract_executable>'
# Example: Read text from an image
image = Image.open('sample_image.png')
text = pytesseract.image_to_string(image)
print(text)
#Example: Read text from an image
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'import pytesseract from PIL import Image pytesseract.pytesseract.tesseract_cmd = r'<full_path_to_your_tesseract_executable>' image = Image.open('sample_image.png') text = pytesseract.image_to_string(image) print(text)
以下是从上述代码生成的输出。
功能强大的光学字符识别库使 .NET 开发人员能够利用IronOCR该工具用于从图像、PDF 和更多文档格式中高效提取文本。 即使在复杂的布局或多语言环境中,先进的算法也能确保极高的准确性。 支持 JPEG、PNG、GIF 和 TIFF 格式。 该库提供可变设置,可通过图像分辨率或文本方向等参数对 OCR 引擎过程进行微调。
图像预处理功能可确保将质量更好的输入图像翻译成识别准确率更高的文件,并进一步将输出文件转换为可搜索的 PDF 文件,以方便信息检索。 因此,考虑到如此容易集成到网络应用程序中,IronOCR 是希望为多个领域实施最值得信赖的文本提取和文档数字化解决方案的开发人员的最佳工具。
高准确度: 它采用先进的复杂算法,无论文档的复杂程度或各种字体的使用情况如何,都能提供高准确度的文本识别。
接受多种格式: 除 PDF 外,它还接受 JPEG、PNG、GIF 和 TIFF 等图像格式,以确保它能在各种应用中执行预期功能。
支持多语种识别: 支持多语种识别,可在各种语言环境中成功提取文本,结果准确。
保留文本布局: 这将保留文档的原始布局,以便提取的文本具有相同的布局,这对清晰的可读性非常重要。
可配置的 OCR: 它提供图像分辨率、文本方向等可配置参数,使开发人员能够在一定程度上优化特定图像的 OCR 工具。
图像预处理: 它配备了一些旨在增强图像效果的基本工具,包括去除噪点、调整对比度和大小,所有这些都是为了提高 OCR 的准确性。
可搜索的 PDF: 扫描的图像和文档可直接转换为可搜索的 PDF,以便进行高效的数据管理和检索。
易于集成: 它可以轻松集成到 .NET 中,实际上,用户可以非常容易地添加 OCR 功能。
批量处理: 适用于同时处理多个图像或文档。 它在处理大量数据时非常有用。
安装非常简单:打开 NuGet Package Manager for Solutions 并启动一个新的 Visual Studio 项目。 只需输入 "IronOCR",然后查找列表。然后,选择 IronOCR 的最新版本,点击安装。
using IronOcr;
class Program
{
static void Main(string[] args)
{
// Initialize IronTesseract engine
var Ocr = new IronTesseract();
// Add multiple languages
Ocr.Language = OcrLanguage.English;
// Path to the image
var inputFile = @"path\to\your\image.png";
// Read the image and perform OCR
using (var input = new OcrInput(inputFile))
{
// Perform OCR
var result = Ocr.Read(input);
// Display the result
Console.WriteLine("Text:");
Console.WriteLine(result.Text);
}
}
}
using IronOcr;
class Program
{
static void Main(string[] args)
{
// Initialize IronTesseract engine
var Ocr = new IronTesseract();
// Add multiple languages
Ocr.Language = OcrLanguage.English;
// Path to the image
var inputFile = @"path\to\your\image.png";
// Read the image and perform OCR
using (var input = new OcrInput(inputFile))
{
// Perform OCR
var result = Ocr.Read(input);
// Display the result
Console.WriteLine("Text:");
Console.WriteLine(result.Text);
}
}
}
Imports IronOcr
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Initialize IronTesseract engine
Dim Ocr = New IronTesseract()
' Add multiple languages
Ocr.Language = OcrLanguage.English
' Path to the image
Dim inputFile = "path\to\your\image.png"
' Read the image and perform OCR
Using input = New OcrInput(inputFile)
' Perform OCR
Dim result = Ocr.Read(input)
' Display the result
Console.WriteLine("Text:")
Console.WriteLine(result.Text)
End Using
End Sub
End Class
与最接近的竞争对手 Tesseract 或 EasyOCR 相比,IronOCR 在处理复杂布局、嘈杂图像和低分辨率文本时更加准确。 内置的图像预处理工具,如降噪和对比度调整,都提高了在实际应用中实现准确性的可能性。
IronOCR 在此方面的表现优于两者,因为它可以在保留原始文档结构和格式的前提下,轻松处理任何类型的图片格式、PDF 文件和多栏布局。 因此,在更传统的数字化项目中,它最终会成为最好的翻译,因为在这些项目中,版面保存是一项资产。
它的一个巨大优势是可以将图像和扫描文件直接转换为完全可搜索的 PDF,而无需依赖额外的工具或库,Tesseract 和 EasyOCR 就是这样。
使用该功能,即使是质量最差的图像也能产生很高的 OCR 识别准确率。 这样可以最大限度地减少对 OpenCV 等其他库的依赖,从而使其成为高质量文本提取的一站式商店。
IronOCR 针对高速、资源节约型 OCR 进行了优化,可确保大型文档处理工作的可扩展性--这是任何企业应用程序的首要任务。
IronOCR 提供商业支持,这可以积极地转化为实际更新和错误修复的增加,以及长期的专门协助,从而为 OCR 的长期可靠性和最新进展提供保证,而这正是 Tesseract 和 EasyOCR 等开源竞争对手所缺乏的。
在最重要的 OCR 库中,IronOCR 凭借其卓越的准确性和易于集成的特点成为最佳选择,更不用说预处理图像和创建可搜索 PDF 等其他功能了。 与 Tesseract 和 EasyOCR 等开源解决方案相比,它可以精确处理复杂的布局和噪声较大的图像,并保持文档结构的完整性,开箱即支持多种语言。
其中包含的工具以及与 .NET 和 Python 的无缝集成确保了这是一款包罗万象的软件包,适合希望将高质量 OCR 集成到任何类型项目中的开发人员使用。 此外,它还具有良好的性能、可扩展性和商业支持,可用于一些小型和大型文档数字化工作,因此是可靠、高效文本识别的最终选择。
要了解有关 IronOCR 及其工作原理的更多信息,请访问此处文档页面在 IronOCR 提供免费试用版的网站上,您可以下载 IronOCR。 要了解有关 Iron Software 产品的更多信息,请参阅库套件页面.