随着 Google 发布了 Gemini Pro Vision,我在思考能否将其用来解决 RAG 中经典的问题,扫描 PDF 中的表格识别和转换为 Markdown 格式。
结论先行
- 使用 Few-shot 可以达到比较完美的识别效果。
- 英文和数据的识别较好。
- 中文 OCR 识别能力较弱,无法使用。
Prompt
我们使用 ai.google.dev,编写 Structured Prompt 如下:
Model: Gemini Pro Vision
Temperature: 0
Prompt 正文:
Please perform OCR on the image and convert it to Markdown table.
- Correctly convert tables and recheck the header columns of the tables.
- Use ```markdown``` code block to wrap the output.
Examples
为了提高识别效果,尤其是解决在多行换行识别逻辑的问题,需要增加示例。
Input:

Output:
```markdown
表 4-1 几种常用的遥感卫星及其遥感器参数
| 遥感卫星 | 轨道高度/km | 轨道倾角/° | 周期/天 | 波段/μm | 空间分辨率/m | 扫幅带宽/km |
| --- | --- | --- | --- | --- | --- | --- |
| Quick Bird | 450 | 97.2 | 1~3.5 | 0.45~0.9<br/>0.45~0.52<br/>0.52~0.60<br/>0.63~0.69<br/>0.76~0.90 | 0.61~0.72<br/>2.44~2.88<br/>2.44~2.88<br/>2.44~2.88<br/>2.44~2.88 | 16.5 |
| 中巴 CBERS-1 | 778 | 98.7 | 26 | 0.50~1.10<br/>1.55~1.75<br/>2.08~2.35<br/>10.4~12.5 | 77.8<br/>77.8<br/>77.8<br/>77.8 | |
| | | | | CCD 相机<br/>0.45~0.52<br/>0.52~0.59<br/>0.63~0.69<br/>0.77~0.89<br/>0.51~0.73 | 19.5 | |
| | | | | 广角成像仪<br/>0.63~0.69<br/>0.77~0.89 | 256 | |
| Landsat TM | 705 | 98.2 | 16 | 0.45~0.52<br/>0.52~0.60<br/>0.63~0.69<br/>0.76~0.90<br/>1.55~1.75<br/>10.4~12.4<br/>2.05~2.35 | 30<br/>(1~5,7波段) | 185 |
```
运行结果
运行 1
Input:

Output:(下划线是github markdown 语法的问题)
表 4-1 续
| 遥感卫星 |
轨道高度/km |
轨道倾角/° |
周期/天 |
波段/μm |
空间分辨率/m |
扫幅带宽/km |
| SPOT |
832 |
98.2 |
26 |
0.500.59 0.610.68 0.790.89 0.510.73 |
20 20 20 10 |
60 |
| NOAA |
833 |
98.9 |
0.5 |
0.580.68 0.721.10 3.553.93 10.311.3 11.5~12.5 |
1 100 |
2 400 |
| IKONOS |
681 |
98.1 |
14 |
0.450.9 0.450.52 0.520.60 0.630.69 0.76~0.90 |
0.82 4 4 4 4 |
1 |
运行 2
Input:

Output:
表 5-1 浙江省森林防火数据库文件
字段解释
| 字段序号 |
字段名称 |
| 8 |
名称、地址、经度(度,分,秒)、纬度(度,分,秒)、区域面积、县区、单位、负责人姓名和电话 |
| 10 |
名称、地址、值班电话、成员姓名、工作单位、行政级别、指挥权限、办公室电话、住宅电话、传真号码、办公电话 |
| 14 |
名称、地址、负责人、电话、经度(度,分,秒)、纬度(度,分,秒)、海拔高度、森林类型、郁闭度、火灾隐患、主要林木、二号工具、柴油、割灌机、GPS定位仪 |
| 10 |
名称、乡镇(乡镇、村)、村庄、经度(度,分,秒)、纬度(度,分,秒)、海拔高度、森林类型、郁闭度、火灾隐患、主要林木、二号工具、柴油、割灌机、GPS定位仪 |
| 14 |
名称、地址、负责人、电话、经度(度,分,秒)、纬度(度,分,秒)、海拔高度、森林类型、郁闭度、火灾隐患、主要林木、二号工具、柴油、割灌机、GPS定位仪 |
| 8 |
无线电台呼号(经建委)、注册号码、台站名称、台站所在地、经度(度,分,秒)、纬度(度,分,秒)、数量、配置情况、通讯设施状况、处置建议 |
| 30 |
编号、火灾编号、发生时间、扑救开始时间、火场面积、森林类型、火场级别、火灾等级、主要原因、过火面积、受灾林木株数、毁坏林木蓄积、受害林地面积、火场火势、火灾扑救力量、扑救方法、车辆(台)、人员(人)、消防器材、扑救经过、火场天气、火灾损失、年份和健康状况、处理建议 |
运行 3
Input:

Output:
表1-2 我国各省林业站、点遥感区域面积表
| 站名 |
遥感面积/万hm2 |
航线 |
航线长度/km |
备注 |
| 东北林业航空中心 |
190.90 |
3 |
1024 |
|
| 吉林省森林消防站 |
227.35 |
1 |
544 |
系统合同线 |
| 贵州省森林消防站 |
491.50 |
4 |
1558 |
不含重要面积 |
| 加格达奇森林消防站 |
512.75 |
3 |
1276 |
同上 |
| 漠河森林消防站 |
620.25 |
3 |
1604 |
|
| 广西壮族自治区林业厅 |
|
|
|
广西规划航线 |
| 海南省林业厅 |
430.25 |
7 |
2811 |
不含重要面积 |
| 乌兰察布特种林场 |
365.25 |
4 |
1399 |
同上 |
| 乌鲁木齐电气林场 |
314.75 |
3 |
1030 |
|
| 克拉玛依林场 |
754.50 |
8 |
3108 |
|
| 长白山森林公园 |
|
2 |
543 |
|
| 江西省林业厅 |
502.00 |
3 |
1282 |
|
| 广西贺州林场 |
648.50 |
5 |
2111 |
|
| 东方红林业农场 |
|
1 |
238 |
|
| 伊春森工林场 |
378.50 |
5 |
1635 |
同上 |
随着 Google 发布了 Gemini Pro Vision,我在思考能否将其用来解决 RAG 中经典的问题,扫描 PDF 中的表格识别和转换为 Markdown 格式。
结论先行
Prompt
我们使用 ai.google.dev,编写 Structured Prompt 如下:
Model: Gemini Pro Vision
Temperature: 0
Prompt 正文:
Examples
为了提高识别效果,尤其是解决在多行换行识别逻辑的问题,需要增加示例。
Input:
Output:
运行结果
运行 1
Input:
Output:(下划线是github markdown 语法的问题)
表 4-1 续
0.590.680.61
0.79
0.890.730.51
20
20
10
0.681.100.72
3.55
3.9311.310.3
11.5~12.5
0.90.520.45
0.52
0.600.690.63
0.76~0.90
4
4
4
4
运行 2
Input:

Output:
表 5-1 浙江省森林防火数据库文件
字段解释
运行 3
Input:

Output:
表1-2 我国各省林业站、点遥感区域面积表