LLM(Claude)は表をMarkdownにしなくても意外と読める！？

## TL;DR
- LLMは、表を前処理なしでフラットなテキストとして渡しても、想像以上にタスクを実施することができる
- 表のMarkdown形式化も有効に働く
- Makrdown化にはコストもかかるので、本当に必要なのかは見極めが必要

## 背景
表の入ったPDFをLLMに渡してタスクを実施させたいという場面は多いです。
しかし、PDFから単純に表を抽出すると表形式が失われてただのテキストになってしまい、それが原因でタスクが実施できないという課題があります。そのために、OCRツールやパースツールを利用したり、LLM自体にパースを実施させるなどの解決方法が模索されています。

そこで、本記事では最先端のLLM(=Claude 3.5 Sonnet v2)はどれだけ表を読むことができるのか、どのような形式で渡すとよいのか、を実験した結果を共有します。

:::note warn
淡々と実験の内容を共有していきますので、結論にだけ興味がある場合は、TL;DRもしくは実験の考察部分だけをお読みください。
:::

## 実験概要
大きく２つの実験をしました
- 実験1. 表を工夫無しで単純なテキストとして取り出して、LLMに渡す
- 実験2. 表をmarkdown形式に変換して、LLMに渡す

また、実験では4つの表データを題材として用いています。単純な表から、セル結合や段組みがある表、複数の表が混じったものなどいくつかバリエーションを持たせています。

モデルはすべてClaude 3.5 Sonnet v2を使っています。
現時点で世界Topクラスのモデルです。

## 実験1. 表を工夫無しで単純なテキストとして取り出して、LLMに渡す

### 実験1-1. 単純な表 : Bedrockのモデルとリージョン対応表

**実験データ**
ここでは、Bedrockにおいてどのモデルがどのリージョンで利用できるのかという表を題材にします。
https://docs.aws.amazon.com/bedrock/latest/userguide/models-regions.html

このような表です。Bedrockのドキュメント内の表全量は大きすぎるので、まずPDFでの1ページ分だけを使ってみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322266/7d040087-bd38-ce51-d5d8-578a7f11dc11.png)

上の画像のような表は単純にフラットなテキストとして抽出すると次のようになります

<details><summary> 表をフラットなテキストにしたもの </summary>

```
ModelsUS
East
(N.
Virginia)
US
East
(Ohio)
US
West
(Oregon)
AWS
GovCloud
(USEast)
AWS
GovCloud
(USWest)
Asia
Pacific
(Tokyo)
Asia
Pacific
(Seoul)
Asia
Pacific
(Mumbai)
Asia
Pacific
(Singapor
e)
Asia
Pacific
(Sydney)
Canada
(Central)
Europe
(Frankfur
t)
Europe
(Zurich)
Europe
(Ireland)
Europe
(London)
Europe
(Paris)
South
America
(São
Paulo)
Anthropic
Claude
3
Opus
Yes* No Yes No No No No No No No No No No No No No No
Anthropic
Claude
3
Sonnet
Yes No Yes No No Yes* Yes* Yes GatedYes Yes Yes No GatedYes Yes Yes
Anthropic
Claude
3.5
Haiku
Yes* No Yes No No No No No No No No No No No No No No
Anthropic
Claude
3.5
Sonnet
v2
Yes* No Yes No No No No No No No No No No No No No No
Anthropic
Claude
3.5
Sonnet
Yes Yes* Yes Yes* Yes Yes Yes Yes* No Yes* No Yes Yes GatedNo Yes* No
Anthropic
Claude
Instant
Yes No Yes No No Yes No No GatedNo No Yes No No No No No
Cohere
Command
Light
Yes No Yes No No No No No No No No No No No No No No
```
</details>

この実験では、このような表に対して次のような質問し、適切に回答できるかを評価します。質問には簡単なものから難しいものまで含まれています。

- Claude3.5 sonnet v2は東京リージョンで使えますか？
    - 列と行の1:1対応に関する質問
- 東京リージョンで使えないモデルはなんですか？
    - 列に関する質問
- Claude 3.5 sonnet v2が使えないリージョンはどこですか？
    - 行に関する質問
- Claude 3.5 sonnetは使えるが、Claude 3.5 sonnet v2は使えないリージョンはどこですか？
    - ２つの行を比べる質問




プロンプトは工夫しておらずシンプルに次のようにしています。これは全実験共通です。

```
渡した表を参考に質問に答えてください

質問:
{question}

表:
{table}
```



**結果** : 

| 質問 | 正誤 |
|:-:|:-:|
| Claude3.5 sonnet v2は東京リージョンで使えますか？  | 正解  |
| 東京リージョンで使えないモデルはなんですか？  |  正解 |
| Claude 3.5 sonnet v2が使えないリージョンはどこですか？  |  正解 |
| Claude 3.5 sonnetは使えるが、Claude 3.5 sonnet v2は使えないリージョンはどこですか？  |  不正解 |

最後の問題は何回リトライしても正解できませんでした。

**考察** : 
- 特に工夫しないフラットなテキストでも、単純な表に関するタスクがある程度解けることがわかりました。
- 最後の問題くらい複雑なタスクになると世界最高レベルのモデルでも解けないようです。

### 実験1-2. 段組みが含まれた表 : 有価証券報告書
**実験データ**:
三菱UFJファイナンシャルグループの有価証券報告書から抜粋しました
https://www.mufg.jp/dam/ir/report/security_report/pdf/yu_mufg23.pdf

表の右上の「当社との関係内容」というカラムの部分が段組みになっています
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322266/1e4e6f17-3f89-135a-2d10-7153290ec636.png)

質問: 
- アコムの資本金又は出資金はいくらですか？
- UFJニコスと当社との関係は？

**結果**:
| 質問 | 正誤 |
|:-:|:-:|
|アコムの資本金又は出資金はいくらですか？| 正解  |
|UFJニコスと当社との関係は？|  正解 |

**考察**:
- 段組みがあってもズレなく表の対応関係を把握できている

### 実験1-3. 多段組の表 : 四半期報告書
**実験データ**:
スギホールディングス 四半期報告書から抜粋
https://disclosure2dl.edinet-fsa.go.jp/searchdocument/pdf/S100SL7V.pdf?sv=2020-08-04&st=2024-03-11T05%3A24%3A47Z&se=2034-01-11T15%3A00%3A00Z&sr=b&sp=rl&sig=d98%2FUUPjslz9fjRAzEf9LmQFeQhF2cKW%2Bf4FxaodYv8%3D

資産の部→流動資産→現金及び預金のように多段階の段組みになっており、それがテキストの位置のみで示されている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322266/2e8be001-a33e-a181-11e8-8b31a9b92727.png)

質問: 
貸倒引当金という項目は２つあり、それが流動資産のものか固定資産のものかを理解しているかを確認し、段組みの理解度を見ます。
- 流動資産の有価証券の前連結会計年度はいくら？
- 流動資産の貸倒引当金の前連結会計年度はいくら？
- 固定資産の貸倒引当金の前連結会計年度はいくら？

**結果**:
| 質問 | 正誤 |
|:-:|:-:|
| 流動資産の有価証券の前連結会計年度はいくら？  | 正解  |
| 流動資産の貸倒引当金の前連結会計年度はいくら？  |  正解 |
| 固定資産の貸倒引当金の前連結会計年度はいくら？  | 正解  |

**考察**:
- 多段組みの構造を理解していると考えられます

### 実験1-4. ２つの表 : 四半期報告書
**実験データ**:
1-3と同様スギホールディングス 四半期報告書から抜粋
フォーマットの少し異なる２つの表を含んでいます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322266/4bedaced-e38a-f3ec-cd95-885b4a154097.png)

質問: 
比較的簡単ですが２つの表のどちらもの内容を含めた質問です
- 41期の会計期間はいつですか？
- 41期Q3の売上高は？
- 41期の純資産額は？
- 42期Q3の一株あたりの四半期純利益は？

**結果**:
| 1 | 2 |
|:-:|:-:|
| 41期の会計期間はいつですか？  | 正解  |
| 41期Q3の売上高は？  |  正解 |
| 41期の純資産額は？  |  正解 |
| 42期Q3の一株あたりの四半期純利益は？  |  正解 |

**考察**:
- 表が複数含まれていても問題なくタスクをこなせる

### 実験1-5. 複数ページ : Bedrockのモデルとリージョン対応表
**実験データ**:
実験1と同じBedrockのモデルとリージョンの対応表を用いて、実験1では1ページのみ使いましたが、6ページ分使ってみます。

基本的には画像のような対応表がずっと連なっているだけです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322266/02897438-d810-11d9-58a8-ff7946ca6d45.png)

しかし、最初や最後のページにはテキストも含まれており、特に次の部分は表の中に出てくる*の意味を説明している重要な箇所です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322266/02095149-0219-dbd6-ea33-baf06945f632.png)

**単純に表が大きくなることとテキストが含まれることがどのように影響するかが確認したいポイントです**

質問:
全ページ分の表を見ないと答えられない質問を含めています
- Claude3.5 sonnet v2は東京リージョンで使えますか？
- Claude 3.5 sonnet v2が使えないリージョンはどこですか？
- Titanのモデルをすべてあげてください
- バージニアリージョンで使えないモデルはなんですか？
- オレゴンリージョンで使えないモデルはなんですか？
- 東京リージョンで使えるモデルはなんですか？

**結果**:
| 質問 | 正誤 |
|:-:|:-:|
|Claude3.5 sonnet v2は東京リージョンで使えますか？   |正解   |
|Claude 3.5 sonnet v2が使えないリージョンはどこですか？   |正解   |
|Titanのモデルをすべてあげてください   | 正解  |
|バージニアリージョンで使えないモデルはなんですか？   | 正解  |
|オレゴンリージョンで使えないモデルはなんですか？   | 正解  |
| 東京リージョンで使えるモデルはなんですか？  | 不正解  |

最後の問題は何回リトライしても正解できませんでした。

**考察**:
- 複数ページ分の表をすべて見ないと答えられない質問にも答えられる
- カウンティングは苦手で、Titanモデルはすべて正確に挙げられるが、その数を間違えるという様子が見られた
- バージニアやオレゴンで使えないモデルは数が少ないから答えられるが、東京リージョンはいくつかあるため難しいのかもしれない

## 実験2. 表をMarkdown形式で、LLMにわたす

LLMに渡す際には、表はmarkdownの形式にすると良いとされています。
実験1で解けなかった次の２つの質問に対して、入力フォーマットをmarkdownで整えれば解けるのかを確認します
1. Claude 3.5 sonnetは使えるが、Claude 3.5 sonnet v2は使えないリージョンはどこですか？
    - 1ページ分の表のみ利用
1. 東京リージョンで使えるモデルはなんですか？
    - 6ページ分の表を利用

フラットテキストの表をmarkdown形式に変換するとこのようになります
*※このmarkdown作成にもLLMを利用しています。LLMでmakrdownの形式に変換した後に目で間違いがないかチェックしたのですが、１つも間違いはありませんでした。*

```
| Model | US East (N. Virginia) | US East (Ohio) | US West (Oregon) | AWS GovCloud (US-East) | AWS GovCloud (US-West) | Asia Pacific (Tokyo) | Asia Pacific (Seoul) | Asia Pacific (Mumbai) | Asia Pacific (Singapore) | Asia Pacific (Sydney) | Canada (Central) | Europe (Frankfurt) | Europe (Zurich) | Europe (Ireland) | Europe (London) | Europe (Paris) | South America (São Paulo) |
|-------|------------------------|-----------------|-------------------|-------------------------|--------------------------|------------------------|------------------------|-------------------------|---------------------------|-------------------------|-------------------|---------------------|-------------------|-------------------|-------------------|-----------------|----------------------------|
| Anthropic Claude 3 Opus | Yes* | No | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
| Anthropic Claude 3 Sonnet | Yes | No | Yes | No | No | Yes* | Yes* | Yes | Gated | Yes | Yes | Yes | No | Gated | Yes | Yes | Yes |
| Anthropic Claude 3.5 Haiku | Yes* | No | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
| Anthropic Claude 3.5 Sonnet v2 | Yes* | No | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No |
| Anthropic Claude 3.5 Sonnet | Yes | Yes* | Yes | Yes* | Yes | Yes | Yes | Yes* | No | Yes* | No | Yes | Yes | Gated | No | Yes* | No |
| Anthropic Claude Instant | Yes | No | Yes | No | No | Yes | No | No | Gated | No | No | Yes | No | No | No | No | No |
| Cohere Command Light | Yes | No | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No |

```

**結果**:
| 質問 | 正誤 |
|:-:|:-:|
| Claude 3.5 sonnetは使えるが、Claude 3.5 sonnet v2は使えないリージョンはどこですか？  | 5回実行して3回程度正解  |
| 東京リージョンで使えるモデルはなんですか？  |  不正解 |

**考察**:
- 不正解しか出せなかったものに正解が出せるようになったため、markdown化することはある程度有効
- 難しいものはmarkdown化しても難しい

## 結論と次の課題
**結論**:
- LLMは、表を前処理なしでフラットなテキストとして渡しても、想像以上にタスクを実施することができる
- 表のMarkdown形式化も有効に働く
- Makrdown化にはコストもかかるので、本当に必要なのかは見極めが必要

**次の課題**: 
- より複雑なタスクや表データによって、LLMの限界とMarkdown化の有効性について、さらに見識を深める
:::note info
「この表読めますか？」「このタスクできますか？」といったチャレンジ課題お待ちしています
:::
- **RAGでのPDFの表の活用**
- (Markdown化以外にもプロンプトエンジニアリングによってタスクの解決率をあげられないか探る)

特に２つ目の「**RAGでのPDFの表の活用**」が重要と考えています。
１つのPDFファイルを渡してタスクを実行するということも少なくないですが、やはり需要が大きいのは大量のPDFファイルの中から必要な情報を取得してタスクを実行するユースケースかと思います。これを実現するために必要なことは、**表を検索できるか**です。次回以降は、この点について深堀りをしていきたいです。