Open urashin opened 9 months ago
camelot(python)の例
■抽出対象 東京都統計年鑑、昭和53年
■抽出結果(5枚目が対象) [区部]
0,1,2,3,4,5
区 部 A11丘〟,86(伯6了5,87270了9,880350t 8893094 88了6040,,8895253
千代田区 Chiyoda一点〝,l−08880,;05056,"98033
ヲ3067",89624,87207
中央区 Chuo・烏ヱ',147805,141376,"134027
128024",124387,=ヲ7ヲ0
港 区 Mina0一点",25ヲ918,254155,247757 24Ⅰ861,236571,232744
新宿区 shinjuku・点〟,418183,418IO4,4146ヲう 413ヲ10,408403,404493
文京区 Bunkyo・点〟,2(;0649,258386,255906 253449,250251,247024
台東区 Tait?ヤ,307838,30256ヲ,293343 286324,276151,2∈、ヲ2≦〉9
墨田区 sumida一点〟,330506,327458,321324 3王7630,3=299,305三)83
江東区 Koto・烏〃,363321,365 6341,363585 359672,352582,345 535
品川区 Shinagawa一点z',429022,429826,426ヲ0ヲ 423278,410981,4101ヲ3
目 黒区 Meguro一点Ⅳ,25〉8583,298607,298932. 298774,2966ヲ4,2ラ70ヲ5
大田区 Ota一点〝,736458,746586,752ヲ99 755535,7502(,2,750ヲ65
世田谷区 Setagaya−ku,688745,706539,723555 742880,751∈;17,764598
渋谷区 Shibuya−klL,286580,282944,282850 283730,284158,2B247ヲ
中野区 Nal⊂anO一点〟,3691ヲ6,37278ヲ,373653 376697,374444,3762∈〉7
杉並区 Suginami一点",510067,520381,527635 536792,538987,544引7
豊島区 Toshima一点緑,373】40,373946,373844 373126,366778,3∈1∈S6
北 区 Kita一点!',441701,44ヲ214,449633 452064,448685,445653
荒川 区 Arakawa一点〟,283(;83,285334,282233 278412,273446,267713
板橋区Itabas】1i一点z',443162,455002,467358 477007,475859,47ヲ0%
練馬区 Nerima一点7(,356507,3823ヲ8,409646 434721,457655,479 705
足立区 Adachト鳥王',443558,464313,486576 514736,525860,5375∈)2
葛飾区 Katsushilは一点ど',406034,4i9462,433723 446040,453646,457 573
江戸川区 Edogawa一点〃,34∈〉139,367 000,"385281
405365",417700,427576
境界未定 Unattacbedland,,,,,
地,,,,,
[市部]
0,1,2,3,4,5,6
市 部 Al15ゐ∫,】466165,1599553,,1了2了98g 1867096 19銅O12,,2099265
八∃三子市 Hachioji−5た〜,177020,184908,,19612β 207753 21∈;324,,224701
立川市 Tacbikawa−ざ揖,86760,93152,97332,10071ヲ,102253,108 j73
武蔵野市 Musasbino−5ゐ∫,12ヲ362,】293∈,0,129646,Ⅰ33516,133984,】34日O7
"Mitaka−ぶゐf
三鷹市",1=748,120702,128663,王35873,140834,王45573
"OIne−5たど
青梅市",5813】,5ヲ22ラ,59ヲ80,60892,61ヲ29,63078
"Fuchu−ぶゐ〜
府中市",ラ7546,iO7005,116629,1265】9,135815,142∠主2ヲ
"Akishima・5んJ
昭島市",51433,5hl 397,56954,59655,62250,66 150
"Chofu−ぶゐg
調布市",82917,92328,1033≡〉0,=8004,128775,138624
"Machidかざゐf
町田市",85924,95753,104 51222,115918,125602,134228
小金井市 Koganeトsたf,57495,65373,71042,76323,80552,84506
小平市 Ⅹodaira−ぶゐ7,71ヲ77,82518,913ヲ4,105353,1=838,121223
日野市 Hino−ざゐJ,50647,54993,60687,∈,アラ7ヲ,73!3i,77ヲ74
東村山市 Higashimurayama・ぶ月∫,54831,633ヲ0,69580,74857,7ヲ819,84071
国分寺市 Ⅹokubunji−5ゐg,46708,52581,58513,64645,68454,72i60
国立市 Kunitachi−ぶんJ,36701,3ヲ09l,40ヲ80,43477,51S〉84,53315
■使ったpythonコード
import camelot
# PDFファイルから表を抽出する関数
def extract_tables_with_camelot(pdf_path, start_page, end_page):
# 指定されたページから表を抽出
tables = camelot.read_pdf(pdf_path, pages=f'{start_page}-{end_page}', flavor='stream')
# 抽出された表をCSV形式で保存
for i, table in enumerate(tables):
table.df.to_csv(f'table_{start_page + i}.csv', index=False)
# ページ5の表を抽出しCSV形式で保存
extract_tables_with_camelot('./tn78qa0020.pdf', 5,5)
Gemini Pro Visionでの実行結果
[!NOTE] 表の形式については正しく認識できていますが、人口は数字が一部間違えている箇所が結構あります。 また、区部のプロンプトを入力し、引き続き市部のプロンプトを入力した際に、年度部分の画像がなくても、先ほどの区部の表と並びは同じですと指示すると、正しく年度毎で表を出力しました。
■抽出結果(5枚目が対象)
[区部]
プロンプト
この画像に示す1962年から1967年までの区部毎の地域別人口を把握し、リストに変換してください。
出力結果
| 地区 | 1962年 | 1963年 | 1964年 | 1965年 | 1966年 | 1967年 |
|---|---|---|---|---|---|---|
| 千代田区 | 108,880 | 105,056 | 98,033 | 93,067 | 89,624 | 87,207 |
| 中央区 | 147,605 | 141,076 | 124,987 | 124,441 | 124,367 | 122,744 |
| 港区 | 258,918 | 251,156 | 232,747 | 231,681 | 228,571 | 219,750 |
| 新宿区 | 418,183 | 408,403 | 395,906 | 393,255 | 402,150 | 404,293 |
| 文京区 | 260,649 | 258,386 | 255,449 | 251,410 | 250,403 | 247,024 |
| 渋谷区 | 330,506 | 327,458 | 321,324 | 317,630 | 311,299 | 305,933 |
| 目黒区 | 363,021 | 362,634 | 362,999 | 362,672 | 359,381 | 341,700 |
| 品川区 | 429,321 | 435,646 | 433,753 | 427,828 | 423,880 | 410,967 |
| 大田区 | 739,553 | 755,558 | 742,880 | 723,850 | 706,539 | 688,745 |
| 世田谷区 | 286,580 | 282,958 | 282,650 | 278,730 | 284,158 | 282,479 |
| 中野区 | 369,196 | 373,966 | 372,789 | 372,789 | 372,789 | 372,789 |
| 杉並区 | 510,067 | 510,067 | 510,067 | 510,067 | 538,987 | 544,617 |
| 豊島区 | 241,603 | 235,154 | 228,354 | 224,752 | 224,168 | 227,633 |
| 北区 | 443,168 | 449,218 | 452,002 | 458,002 | 478,002 | 479,056 |
| 荒川区 | 373,648 | 373,344 | 373,496 | 372,834 | 372,834 | 372,834 |
| 板橋区 | 445,002 | 455,002 | 467,358 | 477,097 | 525,653 | 558,365 |
| 練馬区 | 343,558 | 352,383 | 368,139 | 406,034 | 453,646 | 457,573 |
| 足立区 | 406,034 | 419,462 | 433,723 | 434,158 | 455,646 | 427,676 |
| 葛飾区 | 346,139 | 367,000 | 385,281 | 405,365 | 417,700 | 427,000 |
出力結果のスクリーンショット
[市部] プロンプト
この画像に示す1962年から1967年までの市部毎の地域別人口を把握し、リストに変換してください。
年度の部分の画像がありませんが、並びは先ほど提示した区部毎の地域別人口と同じです。
出力結果
| 地区 | 1962年 | 1963年 | 1964年 | 1965年 | 1966年 | 1967年 |
|---|---|---|---|---|---|---|
| 八王子市 | 177,020 | 184,908 | 196,128 | 207,753 | 216,324 | 224,701 |
| 立川市 | 129,362 | 129,362 | 129,362 | 133,516 | 133,984 | 139,607 |
| 武蔵野市 | 86,760 | 93,152 | 97,149 | 103,572 | 107,223 | 104,512 |
| 三鷹市 | 111,748 | 120,702 | 128,663 | 135,873 | 140,834 | 145,573 |
| 調布市 | 58,131 | 59,980 | 59,980 | 60,982 | 61,924 | 63,078 |
| 町田市 | 97,546 | 107,005 | 116,629 | 126,519 | 135,815 | 142,429 |
| 府中市 | 51,433 | 54,397 | 56,954 | 59,655 | 62,250 | 66,150 |
|昭島市 | 82,917 | 92,328 | 103,984 | 118,004 | 128,775 | 138,228 |
| 町田市 | 57,495 | 65,373 | 71,042 | 76,323 | 80,552 | 84,506 |
| 小金井市 | 71,977 | 65,518 | 69,954 | 76,152 | 80,553 | 82,123 |
| 日野市 | 50,647 | 54,993 | 60,687 | 67,979 | 73,131 | 77,974 |
| 東村山市 | 54,831 | 63,390 | 69,580 | 74,857 | 79,219 | 84,071 |
| 国立市 | 46,701 | 52,581 | 58,154 | 63,954 | 68,454 | 72,316 |
| 立川市 | 36,708 | 39,091 | 43,980 | 47,423 | 51,984 | 53,218 |
出力結果のスクリーンショット
@yuichiro2023 区のデータは大丈夫そうですが、市のデータに不整合が目立つきがしますね。(なぜだろう?)
@urashin よく確認してみると、区のデータも葛飾区の次にあるはずの江戸川区がないため、全体的にデータがずれていました。 出力結果だと区が19個ですが、実際は境界未定を含めて24個ありますので、不整合を起こしていると思います。 横方向の年度については問題ありませんが、縦方向の区の数が間違えています。 横方向はこの画像に示す1962年から1967年までのと数を明確にしているので、縦方向も〇〇個の区がありと数を明確にすると間違えが減るかもしれません。 プロンプトの工夫やデータの分割で精度が上がらないか試してみます。
@urashin 区部についてプロンプトを変更しました。以下工夫をしたところ、ある区(行)の値がないなどの問題は回避できそうですが、中の数字は間違えがあります。
[!NOTE] 工夫した点や気づき事項は以下です。
- 23区の画像を12区と11区で2回に分けて読み込ませ、1回で読み込むテーブルの数を減らした。
- 「縦方向は区の数とし12個を出力ください。」として、縦方向についても数を明確にプロンプトに記載した。
- 境界未定地が埼玉県となったり、明らかに間違えるため 「最後の行は境界未定地のため、人口が"-"となっています。」とプロンプトに追加した。
- プロンプト1に引き続き、プロンプト2を入力したところ、プロンプト1で出力したリストを自動でプロンプト2へ反映して、出力しました。
- 影響があるかわからないが、パラメータをTemperature: 0.1、Top P: 1とし、出力の一貫性を求めつつ、それでいてあらゆる可能性を排除しないようにしました。Temperatureなどのパラメータはもっと色々試して、適正値を探す必要があるかもしれません。TemperatureとTop Pについて
■抽出結果(5枚目の区部のみが対象)
[区部_その1]
プロンプト
この画像に示す1962年から1967年までの区部毎の地域別人口を把握し、マークダウン形式で出力します。 なお横方向は1962年から1967年までの年、縦方向は区の数とし12個を出力ください。
出力結果
| 区 | 1962年 | 1963年 | 1964年 | 1965年 | 1966年 | 1967年 |
|---|---|---|---|---|---|---|
| 千代田区 | 108,880 | 105,056 | 98,033 | 93,624 | 89,624 | 87,207 |
| 中央区 | 147,805 | 141,376 | 134,027 | 128,024 | 124,387 | 119,790 |
| 港区 | 259,918 | 254,155 | 247,757 | 241,861 | 236,571 | 232,744 |
| 新宿区 | 418,183 | 418,104 | 413,699 | 413,910 | 408,403 | 404,493 |
| 文京区 | 260,649 | 258,386 | 255,906 | 253,449 | 250,251 | 247,024 |
| 台東区 | 302,838 | 302,569 | 293,343 | 286,324 | 276,151 | 269,299 |
| 墨田区 | 330,506 | 327,458 | 321,324 | 317,630 | 311,299 | 305,933 |
| 江東区 | 363,585 | 365,634 | 363,585 | 359,672 | 352,582 | 345,635 |
| 品川区 | 429,022 | 429,826 | 426,909 | 423,278 | 410,981 | 401,193 |
| 目黒区 | 298,932 | 298,607 | 298,774 | 298,744 | 296,694 | 297,095 |
| 大田区 | 736,458 | 746,568 | 752,999 | 755,355 | 752,959 | 751,617 |
| 世田谷区 | 689,745 | 706,539 | 723,555 | 742,880 | 751,617 | 764,598 |
出力結果のスクリーンショット
[区部_その2] プロンプト
この画像に示す1962年から1967年までの区部毎の地域別人口を把握し、マークダウン形式で出力します。
なお横方向は1962年から1967年までの年、縦方向は区の数とし12個を出力ください。
最後の行は境界未定地のため、人口が"-"となっています。
出力結果
| 区 | 1962年 | 1963年 | 1964年 | 1965年 | 1966年 | 1967年 |
|---|---|---|---|---|---|---|
| 千代田区 | 108,880 | 105,056 | 98,033 | 93,624 | 89,624 | 87,207 |
| 中央区 | 147,805 | 141,376 | 134,027 | 128,024 | 124,387 | 119,790 |
| 港区 | 259,918 | 254,155 | 247,757 | 241,861 | 236,571 | 232,744 |
| 新宿区 | 418,183 | 418,104 | 413,699 | 413,910 | 408,403 | 404,493 |
| 文京区 | 260,649 | 258,386 | 255,906 | 253,449 | 250,251 | 247,024 |
| 台東区 | 302,838 | 302,569 | 293,343 | 286,324 | 276,151 | 269,299 |
| 墨田区 | 330,506 | 327,458 | 321,324 | 317,630 | 311,299 | 305,933 |
| 江東区 | 363,585 | 365,634 | 363,585 | 359,672 | 352,582 | 345,635 |
| 品川区 | 429,022 | 429,826 | 426,909 | 423,278 | 410,981 | 401,193 |
| 目黒区 | 298,932 | 298,607 | 298,774 | 298,744 | 296,694 | 297,095 |
| 大田区 | 736,458 | 746,568 | 752,999 | 755,355 | 752,959 | 751,617 |
| 世田谷区 | 689,745 | 706,539 | 723,555 | 742,880 | 751,617 | 764,598 |
| 渋谷区 | 286,580 | 283,730 | 282,850 | 283,398 | 284,158 | 282,479 |
|中野区 | 369,196 | 373,789 | 373,653 | 376,697 | 374,444 | 372,367 |
| 杉並区 | 510,067 | 520,381 | 527,635 | 536,792 | 538,987 | 544,617 |
| 豊島区 | 373,140 | 373,946 | 373,844 | 373,126 | 366,778 | 361,686 |
| 北区 | 441,701 | 449,214 | 449,633 | 452,064 | 448,685 | 445,653 |
| 荒川区 | 283,683 | 285,334 | 282,233 | 278,412 | 273,446 | 267,713 |
| 板橋区 | 443,162 | 455,002 | 467,358 | 477,007 | 475,859 | 479,096 |
| 練馬区 | 356,507 | 382,398 | 409,646 | 434,721 | 457,655 | 479,705 |
| 足立区 | 443,558 | 464,313 | 486,576 | 514,736 | 525,860 | 527,562 |
| 葛飾区 | 406,034 | 419,462 | 433,723 | 446,040 | 453,646 | 457,573 |
| 江戸川区 | 346,139 | 367,000 | 385,281 | 405,365 | 417,700 | 427,876 |
| 境界未定地 | - | - | - | - | - | - |
出力結果のスクリーンショット
PDFから表を抽出する最適な手段に関する調査を行う。 調査方針
PDFの具体例3つ