为什么你的文档一直找不到
PDF 的文本并不是以明文保存的,它位于压缩的内容流中,按字体分别编码。2007 年之后的 Office 文件是装着压缩 XML 的 ZIP 容器。读取这些文件原始字节的搜索,从原理上就什么也找不到——这正是许多人坚信某份文档「不在这台电脑上」的原因,而它一直都在。
- PDF — 文本位于 FlateDecode 压缩的内容流中
- DOCX、XLSX、PPTX — 装着压缩 XML 的 ZIP 容器
- ODT、ODS、ODP — 原理相同,XML 不同
- Windows 搜索 — 只索引选定文件夹,整块磁盘直接略过
支持搜索的格式
Deskora 提取文档中可读的文本并搜索它。以下是覆盖范围——以及有意不覆盖的部分。
| 格式 | 搜索内容 |
|---|---|
| PDF (.pdf) | 页面全文,包括压缩流和 CID 字体。会报告页码。 |
| Word (.docx, .docm) | 正文、表格、页眉、页脚、脚注。修订中已删除的文字不计入。 |
| Excel (.xlsx, .xlsm) | 所有工作表的所有单元格。会报告工作表名称。 |
| PowerPoint (.pptx, .ppsx) | 按顺序读取全部幻灯片文字。会报告幻灯片编号。 |
| OpenDocument (.odt) | 包含标题与表格的完整正文。 |
| OpenDocument (.ods) | 所有表格的所有单元格。会报告表格名称。 |
| OpenDocument (.odp) | 全部幻灯片文字。会报告幻灯片名称。 |
| RTF (.rtf) | 完整文本,控制字和字符编码均已解析。 |
| TXT, LOG, CSV, XML, JSON | 逐字节直接搜索——快速路径,保持不变。 |
| .doc, .xls, .msg | 不支持。旧的二进制格式与邮件容器是另一个课题,与其半途而废,不如明确排除。 |
工作方式
提取文本代价不小,因此只做一次。之后文本以压缩形式留在索引中,此后每次搜索都像在搜纯文本。
🔍 文本提取
PDF 内容流被解压并通过字体表解码;Office 文件被解包,其 XML 被正确解析——包括实体和段落分隔。
💾 持久索引
提取出的文本压缩后缓存。只有当文件大小或修改时间变化时才重新提取。
🌙 安静的后台构建
最低的线程与 I/O 优先级,随时可中止。你不应该察觉到它。
📄 真实的命中位置
命中会报告第 7 页、工作表「营收」或第 3 张幻灯片——而不是毫无意义的行号。
Deskora 对比
诚实的对比。Deskora 是免费的桌面软件,不是法务级 e-discovery 平台,也不假装是。
| Deskora | Windows 搜索 | Agent Ransack | dtSearch | |
|---|---|---|---|---|
| 搜索 PDF 内部 | 是 | 仅已索引文件夹 | 是 | 是 |
| 搜索 Office 文件内部 | 是 | 仅已索引文件夹 | 是 | 是 |
| 覆盖所有磁盘 | 是 | 否 | 是 | 是 |
| 正则表达式 | 是 | 否 | 是 | 是 |
| 报告页 / 表 / 幻灯片 | 是 | 否 | 否 | 是 |
| 价格 | 免费 | 系统自带 | 免费 / 付费 | 数百欧元起 |
适合谁
⚖️ 律师事务所与税务师
一个案号出现在 PDF 的页眉、表格的第三个工作表和一份扫描合同里。按文件名一个也找不到;按内容三个都能找到,还会告诉你该打开第几页。
🔬 科研与学习
数百篇论文、几十个数据集、三种格式的笔记。「那个方法在哪篇论文里?」是内容问题,应该只花一秒,而不是一个下午。
🔧 技术文档
零件号和错误代码写在手册里,不在文件名里。能读进手册的搜索,把一堆 PDF 变成知识库。
文档始终留在你的电脑上
文本提取完全在本地进行。不上传、不发送到服务器、不需要账号。文档索引可以完全关闭、限定到指定文件夹,或设置排除项——一个了解全部磁盘的程序,必须让你来划这条线。
常见问题
能找到扫描版 PDF 里的文字吗?
不能。扫描版 PDF 是文字的图像,不是文字。那需要光学字符识别,属于另一类程序。Deskora 会如实报告未找到,而不是假装。
加密的文件怎么办?
会跳过。Deskora 不尝试破解加密,即使是常见的空用户口令也一样:那把锁是创建者有意加上的。
会拖慢电脑吗?
索引在后台以最低优先级构建,随时可中止。纯文本搜索不受影响:它依然直接在文件上运行,不做副本。
索引占多少空间?
提取的文本压缩存储,只是文档本身的一小部分。几千份文档通常只需几十兆字节。
支持非拉丁文字吗?
支持。中文、日文、西里尔文、阿拉伯文和天城文都能处理,忽略大小写的匹配在 ASCII 之外同样有效。
可以用正则表达式吗?
可以,采用 ECMAScript 语法。表达式有误时会在输入框旁给出提示,而不是悄无声息地失败。