0

我正在编写一个应用程序,它将数据流作为输入(来自Redmon )发送到打印机。数据流具有呈现为单色位图的文本,打印机将使用该位图将其打印在纸上。我计划解析这个数据流并理解发送到打印机的文本。我的应用程序会解析来自任何 Windows 应用程序的数据并发送到打印机。

我解析数据流的方式是匹配像素信息(逐字节),如果完全匹配,那么我可以唯一地识别一个字符。为此,我假设所有 Windows 应用程序都使用相同的 Windows 渲染器以像素为单位渲染字体。因此,如果这些应用程序(包括基于 java 的应用程序)使用相同的字体和字体大小来打印它们的文本,我总是会从任何应用程序中为特定字符获取相同的字节序列。这是一个正确的假设还是 Windows 是否为应用程序提供了各种选项来渲染文本以​​进行打印?

还有一个库可以用来使用单色位图数据进行字符识别吗?

注意:我使用的打印机是 ESC/POS 兼容的打印机。这些打印机的打印机驱动程序将要打印的数据作为单色位图发送。

4

1 回答 1

0

我对 ESC/POS 打印机不熟悉,但如果你能保证驱动程序总是将文本呈现为单色位图,那么相同字体和大小的字符相同的机会非常高,但它们不是 100%。首先,您还需要考虑旋转、缩放和剪切。您需要考虑整个转换矩阵,而不仅仅是字体大小。

我能想到的至少还有两个其他故障点:1)用透明胶片覆盖的文本和 2)如果机器安装了具有相同名称的备用字体。例如,可以从许多来源获得像 Helvetica 这样的常见字体,并且它们之间的字符不会相同。第三种可能的故障是应用程序忽略了打印机是单色的并且以彩色或灰度打印的事实。将彩色或灰度转换为单色会为不同的颜色生成不同的位图。

至于 OCR 软件,Wikipedia上有一张很好的 OCR SDK 对比图。

于 2012-08-14T19:41:03.243 回答