# AI 简历 ATS文字层检查：用 AI Job Search 导出 PDF，核对阅读顺序与联系方式

## 执行范围

已用Typst原生编译作者虚构简历、Pypdf提取及Poppler渲染，验证文字层/章节顺序/联系方式；AI Job Search /apply模型流程未运行，不预测ATS排名。

## 输入与目标

原创虚构两栏简历：视觉联系人正常但提取顺序错，含纯文本基准

交付：前后PDF、原始提取文本与阅读顺序差异

## 运行

在 reference 目录执行；先按文件 requirements.txt / package.json 或原生工具文档安装依赖。浏览器练习需 `npx playwright install chromium`；也可设置 `PLAYWRIGHT_EXECUTABLE_PATH` 为自己的 Chrome 路径。

```sh
python check_ats.py
```

## 目录

- fixtures：作者原创输入，不包含用户真实资料。
- starter：读者待完成任务。
- reference：作者完成参考。
- results：作者实际运行所得或明确标注的待运行输入/预期合同。

## 七步

1. **准备虚构简历**

只用Alex Lin等作者虚构资料。先列必须保留的姓名、邮箱、电话和章节顺序，避免检验过程泄露真实求职资料。

2. **确认导出工具链**

AI Job Search允许明确声明编译工具链的自定义模板。本题使用Typst原生编译器绑定，不假称已执行项目默认LuaLaTeX或/apply会话。

3. **导出可读PDF**

编译单栏cv.typ，保留正文文字和完整联系行。真实PDF经Poppler渲染后再看字号、行距和是否溢出。

4. **提取文字层**

用Pypdf重新打开导出文件，逐项查邮箱、电话和Profile/Experience/Education/Skills顺序，不只搜索关键词存在。

5. **制造视觉负例**

把实际渲染页另存为纯图片PDF。视觉内容相同但文字提取为空，说明“看起来有字”并不保证ATS可解析。

6. **回查阅读次序**

对提取文本逐行核对日期与经历对应关系。多栏模板还需特别检查跨栏串行，不把本题单栏通过推广成所有模板通过。

7. **交付解析对照**

保存PDF、文字提取、图像版负例与ats-report。此验收说明本题可解析性，不代表任何招聘平台打分或录用结果。

## 来源

- https://raw.githubusercontent.com/MadsLorentzen/ai-job-search/master/README.md


## 原生工具与边界补充

需要Poppler的pdftoppm及requirements中的Typst原生编译器绑定、Pypdf/Pillow。不是默认LuaLaTeX模板测试，不是/apply模型调用。
