光学字符识别(OCR)将文本图像(扫描件、智能手机照片、PDF)转换为机器可读的字符串,并越来越多地转换为 结构化数据。现代 OCR 是一个清理图像、查找文本、读取文本并导出丰富元数据的管道, 以便下游系统可以搜索、索引或提取字段。两个广泛使用的输出标准是 hOCR,一种用于文本和布局的 HTML 微格式,以及 ALTO XML,一种面向图书馆/档案馆的模式;两者都保留位置、阅读顺序和其他布局提示,并受 流行引擎(如 Tesseract)支持。
预处理。 OCR 质量始于图像清理:灰度转换、去噪、 阈值处理(二值化)和偏斜校正。经典的 OpenCV 教程涵盖了全局、 自适应 和 Otsu 阈值处理——适用于光照不均匀或双峰直方图的文档。当页面内的光照发生变化时 (例如手机快照),自适应方法通常优于单个全局阈值;Otsu 通过分析直方图自动选择阈值。倾斜校正同样重要:基于霍夫变换的 偏斜校正(霍夫线变换)与 Otsu 二值化相结合,是生产预处理管道中常用且有效的方案。
检测与识别。 OCR 通常分为文本检测(文本在 哪里?)和文本识别(它说了什么?)。在自然场景和许多扫描中,全卷积 检测器(如 EAST )可以有效地预测单词或行级四边形,而无需繁重的提议阶段,并且已在 常见工具包(例如 OpenCV 的文本检测教程)中实现。在复杂的页面(报纸、表格、书籍)上,行/区域的分割和阅读顺序推断很重要:Kraken 实现了传统的区域/行分割和神经基线分割,并明确支持 不同的脚本和方向(LTR/RTL/垂直)。
识别模型。 经典的开源主力 Tesseract (由 Google 开源,源于 HP)从字符分类器演变为基于 LSTM 的序列 识别器,可以从 CLI 发出可搜索的 PDF、 hOCR/ALTO 友好输出等。现代识别器依赖于序列建模,而无需预先分割字符。 连接主义时间分类 (CTC) 仍然是基础,它学习输入特征序列和输出标签字符串之间的对齐;它广泛 用于手写和场景文本管道。
在过去几年中,Transformer 重塑了 OCR。 TrOCR 使用视觉 Transformer 编码器和文本 Transformer 解码器,在大型合成语料库上进行训练,然后 在真实数据上进行微调,在印刷、手写和场景文本基准测试中表现出色(另请参阅 Hugging Face 文档)。与此同时,一些系统绕过 OCR 进行下游理解: Donut(文档理解 Transformer) 是一种无 OCR 的编码器-解码器,可直接从文档 图像输出结构化答案(如键值 JSON)(仓库, 模型卡),避免了在单独的 OCR 步骤为 IE 系统提供数据时出现错误累积。
如果您想要跨多种脚本的“开箱即用”文本阅读, EasyOCR 提供了一个包含 80 多种语言模型的简单 API,可返回框、文本和置信度——方便用于原型和 非拉丁脚本。对于历史文献, Kraken 以基线分割和脚本感知阅读顺序而著称;对于灵活的行级训练, Calamari 建立 在 Ocropy 的基础上(Ocropy),带有(多)LSTM+CTC 识别器和用于微调自定义模型的 CLI。
泛化取决于数据。对于手写, IAM 手写数据库 为训练和评估提供了不同作者的英语句子;它是 行和单词识别的长期参考集。对于场景文本, COCO-Text 在 MS-COCO 上分层了广泛的注释,带有印刷/手写、清晰/不清晰、脚本和 完整转录的标签(另请参阅原始 项目页面)。该领域还严重依赖合成预训练: 野外合成文本 将文本渲染到具有逼真几何和光照的照片中,为预训练 检测器和识别器提供大量数据(参考 代码和数据)。
ICDAR 的鲁棒阅读 下的竞赛使评估保持接地气。最近的任务强调端到端检测/阅读,并包括将单词 链接成短语,官方代码报告 精确率/召回率/F-score、交并比 (IoU) 和字符级编辑距离度量——反映了从业者应该跟踪的内容。
OCR 很少以纯文本结尾。档案馆和数字图书馆更喜欢 ALTO XML ,因为它 除了内容之外还编码了物理布局(带坐标的块/行/字),并且它与 METS 打包配合得很好。 hOCR 微格式则相反,它使用 ocr_line 和 ocrx_word 等类将相同的思想嵌入到 HTML/CSS 中,从而可以轻松地使用 Web 工具进行显示、编辑和转换。Tesseract 两者都支持——例如, 直接从 CLI 生成 hOCR 或可搜索的 PDF(PDF 输出指南);像 pytesseract 这样的 Python 包装器增加了便利性。当存储库具有固定的接收 标准时,存在用于在 hOCR 和 ALTO 之间进行转换的转换器——请参阅此精选列表 OCR 文件格式工具。
最强劲的趋势是融合:检测、识别、语言建模,甚至特定于任务的解码 正在合并到统一的 Transformer 堆栈中。在 大型合成语料库 上进行预训练仍然是一个力量倍增器。无 OCR 模型将在目标是结构化输出 而不是逐字记录的任何地方积极竞争。也期待混合部署:一个轻量级检测器加上一个 TrOCR 风格的 识别器用于长格式文本,以及一个 Donut 风格的模型用于表格和收据。
Tesseract (GitHub) · Tesseract 文档 · hOCR 规范 · ALTO 背景 · EAST 检测器 · OpenCV 文本检测 · TrOCR · Donut · COCO-Text · SynthText · Kraken · Calamari OCR · ICDAR RRC · pytesseract · IAM 手写 · OCR 文件格式工具 · EasyOCR
光学字符识别(OCR)是一种技术,用于将不同类型的文档,如扫描的纸质文档、PDF文件或由数字相机拍摄的图像,转换为可编辑和可搜索的数据。
OCR通过扫描输入的图像或文档,将图像分割成单个字符,然后将每个字符与使用模式识别或特征识别的字符形状数据库进行比较。
OCR用于各种行业和应用中,包括数字化打印文档、启用文字到语音服务、自动化数据录入过程、以及帮助视障用户更好地与文本交互。
尽管OCR技术 已取得了巨大的进步,但它并不是绝对可靠的。根据原始文档的质量和所使用的OCR软件的具体情况,其准确性可能会有所不同。
虽然OCR主要用于识别打印的文本,但一些先进的OCR系统也能识别清晰、一致的手写字。然而,由于个人写作风格的巨大差异,手写字体识别通常准确率较低。
是的,许多OCR软件系统可以识别多种语言。然而,需要确保你正在使用的软件支持特定的语言。
OCR是Optical Character Recognition的缩写,用于识别打印的文本,而ICR,或称Intelligent Character Recognition,更先进,用于识别手写的文本。
OCR最适合处理清晰、易于阅读的字体和标准的文字大小。虽然它可以处理各种字体和大小,但是当处理不常见的字体或非常小的文字大小时,准确性可能会下降。
OCR可能会出现问题,如处理低分辨率的文档,复杂的字体,打印质量差的文本,手写文本,以及含有干扰文本的背景的文档。另外,尽管它可以处理多种语言,但可能并不能完美地覆盖所有语言。
是的,OCR可以扫描彩色的文本和背景,虽然它通常对高对比度的颜色组合更有效,比如黑色的文本和白色的背景。当文本和背景颜色对比度不足时,其准确性可能会降低。
MAT 图像格式通常与 MATLAB 相关,MATLAB 是 MathWorks 开发的高级语言和交互式环境,它不是像 JPEG 或 PNG 这样的传统图像格式。相反,它是一种用于存储矩阵、变量和其他通常在 MATLAB 中使用的类型的数据的文件格式。MAT 格式是 MATLAB MAT 文件的缩写。此文件格式对于 MATLAB 用户至关重要,因为它允许存储和管理会话数据,其中可以包括变量、函数、数组,甚至以可以轻松加载回 MATLAB 工作区以进行进一步分析或处理的格式存储的图像。
MAT 文件是二进制数据容器,可以容纳多个变量,包括多维数组和标量数据。对于图像,MATLAB 将它们视为矩阵,其中每个像素值都存储为矩阵中的一个元素。对于灰度图像,这是一个二维矩阵,而对于彩色图像,它是一个三维矩阵,其中红色、绿色和蓝色颜色分量有单独的层。MAT 格式对于存储此类图像数据特别有用,因为它保留了数据的精确数值精度和结构,这对于科学和工程应用至关重要。
MAT 文件格式随着时间的推移而演变,随着 MATLAB 的更新,发布了不同的版本。最常见的版本是 MAT 文件版本 4、5 和 7,截至我 2023 年的知识截止日期,版本 7.3 是最新版本。每个版本在数据容量、压缩和与 HDF5(分层数据格式版本 5)的兼容性方面都引入了改进,HDF5 是一个广泛用于存储和管理复杂数据的流行数据模型、库和文件格式。
MAT 文件版本 4 是最简单、最古老的格式,不支持数据压缩或复杂的分层结构 。它主要用于与旧版本的 MATLAB 兼容。版本 5 是一种更高级的格式,引入了数据压缩、Unicode 字符编码以及对复数和对象的支持等功能。版本 7 添加了更多增强功能,包括改进的压缩和存储更大数组的能力。版本 7.3 完全集成了 HDF5 标准,允许 MAT 文件利用 HDF5 的高级功能,例如更大的数据存储和更复杂的数据组织。
在处理 MAT 文件时,尤其是对于图像数据,了解 MATLAB 如何处理图像非常重要。MATLAB 将图像表示为数字数组,每个数字对应于灰度图像中的像素强度或 RGB 图像中的颜色代码。例如,8 位灰度图像存储为一个矩阵,其值范围为 0 到 255,其中 0 表示黑色,255 表示白色,介于两者之间的值表示灰色阴影。对于彩色图像,MATLAB 使用三维数组,其中前两个维度对应于像素位置,第三个维度对应于颜色通道。
要在 MATLAB 中创建 MAT 文件,可以使用“save”函数。此函数允许用户指定文件名称和他们希望保存的变量。例如,要将名为“img”的图像矩阵保存到名为“imageData.mat”的 MAT 文件中,可以执行命令“save('imageData.mat', 'img')”。此命令将创建一个包含图像数据的 MAT 文件,该文件可以在以后使用“load”函数加载回 MATLAB 中。
在 MATLAB 中加载 MAT 文件非常简单。“load”函数用于从文件中读取数据并将其带入 MATLAB 工作区。例如,执行“load('imageData.mat')”会将“imageData.mat”的内容加载到工作区中,允许用户访问和操作存储的图像数据。“whos”命令可以在加载后使用,以显示有关已加载变量的信息,包括它们的大小、形状和数据类型。
MAT 格式的一个主要优点是它能够紧凑高效地存储数据。将数据保存到 MAT 文件时,MATLAB 可以应用压缩来减小文件大小。这对于图像数据特别有用,图像数据可能 非常大,尤其是在处理高分辨率图像或大量图像数据集时。MAT 文件中使用的压缩是无损的,这意味着当数据加载回 MATLAB 时,它与原始数据相同,没有精度或质量损失。
MAT 文件还支持存储元数据,其中可以包括有关数据来源、创建日期、使用的 MATLAB 版本以及任何其他相关详细信息的信息。在与他人共享数据或将数据存档以备将来使用时,此元数据非常有价值,因为它提供了上下文并确保可以准确解释和再现数据。
除了数值数组和图像数据之外,MAT 文件还可以存储各种其他数据类型,例如结构、单元格数组、表格和对象。这种灵活性使 MAT 文件成为 MATLAB 用户的多功能工具,因为它们可以将各种数据类型和结构封装在一个文件中。这对于涉及多种类型数据的复杂项目特别有用,因为所有相关数据都可以以一致且有组织的方式保存。
对于需要在 MATLAB 之外与 MAT 文件交互的用户,MathWorks 提供了 MAT 文件 I/O 库,该库允许用 C、C++ 和 Fortran 编写的程序读取和写入 MAT 文件。此库对于将 MATLAB 数据与其他应用程序集成或开发需要访问 MAT 文件数据的自定义软件非常有用。此外,还有适用于其他编程语言(例如 Python)的第三方库和工具,使更广泛的应用程序能够处理 MAT 文件。
MAT 文件与 HDF5 标准在版本 7.3 中的集成极大地扩展了该格式的功能。HDF5 旨在存储和组织大量数据,通过采用此标准,MAT 文件现在可以处理比以前大得多的数据集。这对于机器学习、数据挖掘和高性能计算等领域尤为重要,在这些领域中,大量数据很常见。HDF5 集成还意味着可以使用兼容 HDF5 的工具访问 MAT 文件,从而进一步增强了与其他系统和软件的互操作性。
尽管 MAT 格式有很多优点,但仍有一些注意事项需要牢记。一个是版本兼容性问 题。随着 MATLAB 的发展,MAT 文件格式也在不断发展,较新版本中保存的文件可能与较旧版本的 MATLAB 不兼容。用户需要了解他们正在使用的 MATLAB 版本以及他们尝试加载的 MAT 文件的版本。MATLAB 提供了在保存时检查和指定 MAT 文件版本的函数,这有助于在不同的 MATLAB 版本之间保持兼容性。
另一个考虑因素是 MAT 格式的专有性质。虽然它得到了 MathWorks 的充分记录和支持,但它不是像其他一些数据格式那样的开放标准。当与无法访问 MATLAB 或兼容软件的用户共享数据时,这可能会带来挑战。然而,与 HDF5 的集成在一定程度上缓解了这个问题,因为 HDF5 是一个开放标准,并且有许多工具可用于处理 HDF5 文件。
总之,MAT 图像格式是一种强大且灵活的方式,可以存储 MATLAB 中的图像数据和其他变量。它保留数值精度的能力、支持广泛的数据类型以及与 HDF5 标准集成的能力使其成为 MATLAB 用户的宝贵工具,尤其是那些在科学和工程领域工作的用户。虽然在版本兼容性和格式的专有性方面有一些考虑因素,但将 MAT 文件用于数据存储和交换的好处是显着的。随着 MATLAB 的不断发展,MAT 格式很可能会继续发展,为管理复杂数据提供更多功能和能力。
这个转换器完全在您的浏览器中运行。当您选择一个文件时,它将被读入内存并转换为所选格式。 然后,您可以下载转换后的文件。
转换立即开始,大多数文件在一秒钟内完成转换。较大的文件可能需要更长时间。
您的文件永远不会上传到我们的服务器。它们在您的浏览器中转换,然后下载转换后的文件。我们永远看不到您的文件。
我们支持在所有图像格式之间进行转换,包括 JPEG、PNG、GIF、WebP、SVG、BMP、TIFF 等等。
这个转换器完全免费,并将永远免费。因为它在您的浏览器中运行,所以我们不需要为服务器付费,因此我们不需要向您收费。
是的!您可以同时转换尽可能多的文件。只需在添加时选择多个文件即可。