アクティブ読書用の目次を作成する
アクティブ読書をするにあたり、これを作るのがあまりに面倒なので時短したい
/takker/Scrapbox書籍のformat@0.2.0#6362a1d91280f00000240b5aのデータ構造を作る
csvを出力する
LLMに見せてみたけどPDFは見た目は一見構造化されているが、plainにした時のデータがダメな場合があって全然うまく目次を出力しない
画像で渡せばいいのでは?
プレーンデータを作る
Gemini 1.5 Proに画像で渡して目次を作成し、そのプレーンデータを使って再度上の手順を行う
Gemini 1.5 Proが指示に従ってくれない
コラム目次と目次が別のがあった時にマージしないとjsonが作れないと思うのでページ数順に目次を並べたかったのだが、部分的に間違ってくる(5ページ→12ページ→8ページ)
数日使っていてGemini 1.5 Proは精度も察する能力も低い印象があるな
面倒なポイント
電子書籍版と物理書籍のページ数の違い
ページ数が書いていないページがある
子要素のカウントがめんどくさい
徐々に自動化したい
同じページが連番である場合、前のページに戻ってしまう
注意するべきポイント
0-index
csvファイル
code:prompt
本の目次を作りたい。
与えられた本の目次から、index.csvを参考に、CSVを作成してください。
目次には章のタイトルを入れること。
# index.csvが表すデータ構造
xもしくは空欄はページなし
子の数で、含まれる節の数を示す
省略した場合は0とみなす
この例の場合、以下のような階層構造になる
1
1.1
1.2
1.2.1
1.2.2
column1
2
2.1
2.2
column2
3
データ構造を確かめるテストは次のようになっている
#テスト
import { parse, sort, Page } from "./mod.ts";
import Parser from "../papaparse/mod.ts";
import { assertEquals } from "../deno_std%2Ftesting/asserts.ts";
Deno.test("parse()", async (t) => {
await t.step("一致を確かめる", () => {
const csv =
`1,0,2,3
1.1,3,3,
1.2,x,x,2
1.2.1,4,6,0
1.2.2,6,12,0
column1,13,14,0
2,,,2
2.1,15,16,
2.2,17,20,1
column2,19,19,0
3,20,24,0`;
const { data } = Parser.parse<string[]>(csv);
assertEquals<Page[]>(...parse(data), [
{ title: "1.1", next: "1.2", prev: "1", indice: 3, children: [], },
{ title: "1.2.1", next: "1.2.2", prev: "1.2", indice: 4, 5, 6, children: [], },
{ title: "1.2.2", next: "column1", prev: "1.2.1", indice: 6, 7, 8, 9, 10, 11, 12, children: [], },
{ title: "1.2", next: "column1", prev: "1.1", indice: [], children: "1.2.1", "1.2.2", },
{ title: "column1", next: "2", prev: "1.2", indice: 13, 14, children: [], },
{ title: "1", next: "2", prev: "", indice: 0, 1, 2, children: "1.1", "1.2", "column1", },
{ title: "2.1", next: "2.2", prev: "2", indice: 15, 16, children: [], },
{ title: "column2", next: "3", prev: "2.2", indice: 19, children: [], },
{ title: "2.2", next: "3", prev: "2.1", indice: 17, 18, 19, 20, children: "column2", },
{ title: "2", next: "3", prev: "1", indice: [], children: "2.1", "2.2", },
{ title: "3", next: "", prev: "2", indice: 20, 21, 22, 23, 24, children: [], },
]);
});
});
# cnvにしたい本の目次