【问题标题】:TIFF IFilter not properly reading text in VARBINARY columnTIFF IFilter 未正确读取 VARBINARY 列中的文本
【发布时间】:2010-08-22 02:49:24
【问题描述】:

link text我想使用内置在 Windows 2008 Server R2 中的 TIFF IFilter 和 SQL Server 2008 中的全文搜索...还有 R2。

我已经通过服务器管理器安装了过滤器,并将计算机配置 -> 管理模板 -> OCR 中的“强制 TIFF IFilter 对 TIFF 文档中的每个页面执行 OCR” 本地组策略设置更新为“已启用”。

我还创建了一个全文目录和一个名为“FileData”的表,如下所示:

CREATE TABLE [FileServer].[FileData](
 [FileDataId] [int] IDENTITY(1,1) NOT NULL,
 [FileGUID] [uniqueidentifier] ROWGUIDCOL  NOT NULL,
 [Data] [varbinary](max) FILESTREAM  NOT NULL,
 [Extension] [nvarchar](100) NULL,
 [Filename] [nvarchar](256) NULL,
 [Path] [nvarchar](256) NULL,
 CONSTRAINT [PK_FileData_FileDataId] PRIMARY KEY CLUSTERED 
(
 [FileDataId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY] FILESTREAM_ON [FILES],
 CONSTRAINT [UX_File_FileGUID] UNIQUE NONCLUSTERED 
(
 [FileGUID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] FILESTREAM_ON [FILES]

GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [FileServer].[FileData] ADD  CONSTRAINT [DF_FileData_FileGUID]  DEFAULT (newid()) FOR [FileGUID]
GO

ALTER TABLE [FileServer].[FileData] ADD  CONSTRAINT [DF_FileData_FileData]  DEFAULT (0x) FOR [Data]
GO

当我将文件(如 PDF 或 Word DOC)插入该表时,我可以稍后通过全文搜索在文件中找到关键字:

我制作了一个巨大的 TIFF 文件,其中包含非常清晰的文本(1024 x 768... 大约 12 个字)并将其导入到 FileData 表中。我能找到里面的每一个字。

SELECT [Path], [Filename], [Data]
FROM [FileServer].[FileData]
WHERE FREETEXT(*, 'Jason') and FREETEXT(Extension, 'tif');

但是,当我使用“真实”TIFF 文件(例如制造商提供的数据表)时,我在搜索关键字时得到零结果。我不知道为什么,也没有太多使用 SQL Server 在线解决此问题的问题。

我尝试使用各种压缩、不压缩等保存 .TIFF 文件……但我没有任何运气。我的测试文件中的文本很清晰,而且仍然很大。我无法想象文件清晰度是问题,尽管我认为这是可能的。

为了便于比较,我拍摄了以下两张图片并导入了它们:

WORKING SAMPLE FILE BROKEN SAMPLE FILE

工作样本的结果非常好。以下是全文索引中工作示例中的关键字: 3.50 美元 © 0004 08 1989 2010 21 21:35:42 235 282 3116 3702 40 48109 89 比比皆是 吸收 抽象的 伴随着 获得 行为 行动 好处 机构 算法 算法 已经 金额 阿姆斯特丹 分析 安 出现了 应用 乔木 安菲乔伊 人工1 任务 湾 基于 基础 布克 旅 桶 建造 BV 能力 小心 改变 特征 跳棋 分类器 分类器 关闭 认知的 比较 竞争 复杂的 复杂性 复杂 电脑 面对 迷惑 考虑 持续 不断地 连续不断 做作的 信用 治愈 d.e. 数据 德 体面的 定义 定义 设计 设计的 设计 发现 讨论 令人不安 中 生态的 经济的 电子计算机系统 努力 其他的 文件结束 工程 环境 环境 呃 甚至 事件 例子 展示 经验 表达 现存 扩展 脸 面孔 可行的 文件 射击 第一的 流动 下列的 格式 游戏 生成 通用的 遗传 给予 目标 戈德堡 好的 假日 荷兰 然而 假设 图片 沉浸 免疫 撞击 含蓄地 不准确 信息 智力 兴趣 干预 介绍 无关紧要的 j.h. jh 杂志 磅。 大的 磅 学习 学习 寿命 长 机器 哺乳动物 哺乳动物 哺乳动物的 大量地 信息 米 密歇根州 新的 nn0004 nn08 nn1989 nn2010 nn21 nn235 nn282 nn3116 nn3702 nn3d5$ nn40 nn48109 nn89 嘈杂 北 没有 小说 新奇 可获得的 经常 一 操作 选项 起初 外部 自己的 纸 平行线 通过 图案 清偿 允许 永动的 永远 玩 播放器 戏剧 可能的 漂亮的 问题 提供 出版商 出版商 迅速地 随机 很少 真实的 实际的 加强 反复 转载 要求 视网膜 评论 修订 机器人 规则 规则 科学 序列 套 显著地 简单的 简单地 小的 疏 系统 系统 标记 技术 理论 雷神 tiff 时间 tt2135 两次 曲折 二 通常 美国。 大学 之上 我们 美国 视觉的 卷 没有 想知道 世界

但是破碎样本的结果只是……嗯,是空的。实际 TIFF 图像中没有一个字: 08 2010 21 21:49:22 文件结束 文件 格式 图片 nn08 nn2010 nn21 标记 tiff tt2149

如果有人对接下来要尝试什么有任何想法,我会全力以赴。

【问题讨论】:

    标签: sql-server-2008 ocr windows-server-2008-r2 full-text-indexing


    【解决方案1】:

    尝试将不工作的图像转换为黑白,看看是否有更多的单词被识别。

    已添加

    尝试使用 IrfanView(或任何图像工具)将第二张图像的 DPI 设置为 300。然后再试一次。

    显然,这些故障排除步骤不是永久解决方案,它们只是帮助隔离问题。

    【讨论】:

      【解决方案2】:

      rwong 是正确的。您需要隔离问题。

      并非所有 OCR 引擎都可以处理彩色 TIFF 图像并且更喜欢黑白。我猜 OCR 引擎甚至没有处理您的非工作页面,只是发出一条您看不到的错误消息。

      1. 按照上述尝试将文件另存为黑白 TIFF 图像。
      2. 将文件另存为 JPEG,然后尝试将图像识别为 JPEG。

      我通过 OCR 运行了您的非工作图像,并且能够正确提取大部分文本,因此分辨率不是主要问题。

      【讨论】:

        【解决方案3】:

        好吧,事实证明实际问题是图像的大小。 ITFF IFilter 中的 OCR 甚至没有尝试处理它……太大了。我不得不通过反复试验发现这一点,并且找不到任何说明传入 TIFF 的最大尺寸/DPI 的文档。有人知道这些规格吗?这篇文章似乎有一些信息:support.microsoft.com/kb/837847 但是特定于 Sharepoint,我没有时间弄乱设置以查看它是否有效。另外,我真的需要去掉尺寸上限。有什么想法吗?

        【讨论】:

        • OK...我的服务器是Server 2008 R2,上述文章中的注册表项甚至不存在。但是,我确实找到了这个值:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TiffIFilter\MaxImageSize。我对这个特定 IFilter 的文档感到非常失望......只是它的实际行为似乎并不多。这对 Sharepoint 来说可能没问题,但作为开发人员/SQL 管理员,我需要更多。也许 MS 会阅读此内容并为我们更新。
        • 好的,问题的另一个方面。我拥有的注册表值是 38797312。这应该转换为大约 388 MB,给予或接受。我发布的图片很大,但没有那么大。
        • 源文件为 25.823 英寸 x 34.458 英寸,96 DPI。将 DPI 更改为 300 会将大小降低到 9.163 x 12.228,但不会更改文件大小。这将问题隔离为文档的宽度/高度作为尺寸,而不是文件大小或以像素为单位的 WxH。我想我现在只是将所有 .TIFF 文件即时转换为 300 DPI。我已经将 PDF 转换为 TIFF,因此在过程中更改该值应该没什么大不了的。
        【解决方案4】:

        我发现了一些有趣的东西

        我用 C# 做

                            Image tiffFile = Image.FromFile(TiffPath);
        
                            resultFilePath = Path.Combine(tempFolder, Path.GetFileName(TiffPath));
        
                            tiffFile.Save(resultFilePath);
        

        并使用将新的 tiff 文件放入数据库,它可以工作,我不知道为什么,但解决了我的问题

        【讨论】:

        • 我找到了更多,好像tiff文件的压缩类型是LZW的话,把文本取出来是没有问题的
        猜你喜欢
        • 1970-01-01
        • 2021-01-05
        • 1970-01-01
        • 1970-01-01
        • 2018-02-19
        • 1970-01-01
        • 2021-10-08
        • 1970-01-01
        相关资源
        最近更新 更多