使い方
手順.r
install.packages("devtools")
library("devtools")
install_github("nt1969m/sbitools")
library("sbitools")
# 同じ種類の.pdf$ごとに、個別のディレクトリーに格納する。※ここ重要!
# setwd() # ".pdf$"のあるディレクトリーを設定してね!
# R本体の場合、 「メニュー」 → 「その他」 → 「作業ディレクトリの変更」
# RStudioの場合、「メニュー」→「Session」→「Set Working Directory」→「Choose Directory」
変数 <- read_sbi() # ".pdf$"のあるディレクトリーに.csv$が作成されます。
変数 |> View() # 変換結果を確認
対応.pdf$
株式等配当金のお知らせ
割当株式等のお知らせ
公社債等募集 取引報告書
公社債利金のお知らせ
pf(パターン・ファイル)
未対応の.pdf$は、独自pf(パターン・ファイル)を作成した上で実行して下さい。
独自pf.r
#(参考)標準pfの目検
system.file( "read_sbi_p3.csv" ,package="sbitools") |> readLines() # 標準pf
#(前提)独自pfを.pdf$のあるディレクトリーに格納する。
# 独自pfを目検する。
"inf_01.csv" |> readLines() # header行と1行目だけにする。
# 2行目以降(対象外.pdf$行)不要
変数 <- read_sbi(p="^i")
変数 |> View()
↓パッケージ・デフォルトのpf(パターン・ファイル)
※ Tab "\t"
Separated
Values です。
read_sbi_p3.csv
# pf(パターン・ファイル)
#
# read_sbi(p="")
#
# p3: p="read_sbi_p3.csv" # system.file( p ,package="sbitools" ) |>
# # read.table( header = T )
#
# 第1列 rows 行数 上段だけでなく下段もある場合は 2 です。
# 第2列 cols 列数
# 第3列 title .pdf$の表題 p4: t="お知らせ$|募集$"と一致しないと抽出しません。
# 第4列 colnames 列の名前
# 第5列 y 各列のpdf_data、"y"を指定(上段)
# 第6列 s 各列のpdf_data、"x"の抽出開始位置を指定(>=)
# 第7列 e 各列のpdf_data、"x"の抽出終了位置を指定(<)
# 第8列 han 何か指定すると、半角に変換します。
# 例 h とか
# ymd だとR標準の日付形式(2025-08-14とか)に変換します。
# s だと全ての.pdf$処理後に"sum()"します。_sum.csv$も出力します。
# 第9列 y2 各列のpdf_data$"y"を指定(下段)
#
rows cols title colnames y s e han y2 # header
#
# 1行目 → ↓
2 11 株式等配当金のお知らせ "銘柄名,銘柄コード,お支払日,配当単価,数量,配当金額,所得税,地方税,端数処理代金,お受取金額,配当基準日" "91,100,94,94,94,126,126,126,126,126,139" ",,,317,441,,126,227,329,445," ",,317,441,,126,227,329,445,," ",h,ymd,h,h,s,s,s,s,s,ymd" "166,175,171,171,171,202,202,202,202,202,216" # 1
#
# 2行目 → ↓
1 9 割当株式等のお知らせ "銘柄名,銘柄コード,権利区分,権利割当日,分割比率,加入者名,お預り数量,割当数量,合計数量" "126,135,126,126,126,180,180,180,180" ",,225,300,389,,213,291,370" "266,,300,389,,213,291,370," ",h,,ymd,h,,h,h,h" "" # 2
#
# 3行目 → ↓
2 13 公社債等募集 "銘柄名,銘柄コード,取引区分,額面,単価,約定金額,経過利子,手数料,消費税等,ご清算金額,空欄1,空欄2,空欄3
" "118,135,121,112,112,112,126,126,126,126,135,144,153" ",,,130,298,424,,269,345,424,142,," ",172,160,298,424,,269,345,424,,,," ",h,,h,h,s,s,s,s,s,," ",,,,,,,,,,,,," # 3
#
# 4行目 → ↓
2 12 公社債利金のお知らせ "銘柄名,銘柄コード,利率または償還単価,期数,税区分,利払日または償還日,備考,額面(千円),利金または償還金,所得税,地方税,お受取金額" "91,100,94,94,94,94,0,126,126,126,130,130" ",,,345,379,412,516,,133,248,,248" ",,345,379,412,516,,133,248,,248," ",h,h,,,ymd,,h,s,s,s,s" "185,175,188,188,188,188,0,220,220,220,0,224" # 4
# 以下余白
.pdf$、分析手順
分析.r
library("pdftools")
f <- file.choose() # macの方言かも? winだと、choose.fileだったような。。
data <-f |> pdf_data() # pdftools::の機能
data[[1]] |> View() # 1ページ目を分析
# ますは、"y"を並べ替え! ※ 何も考えずに。
# 行"y"ごとに分析
# (具体例)
data[[1]] |> ynx(126) # y=126の行全体
# [1] "600,00091,89000508,110"
# "x"ごとに分析 "x" + 文字数 * 6 をe(終了位置)とみなす。
data[[1]] |> ynx(126, ,121) #[1] "600,000"
# 前段のe(終了位置)をs(開始位置)とみなし、e(終了位置)を計算
data[[1]] |> ynx(126,121,296) #[1] "91,890"
data[[1]] |> ynx(126,296,329) #[1] "0"
data[[1]] |> ynx(126,329,445) #[1] "0"
data[[1]] |> ynx(126,445,553) #[1] "508,110"
# ↑ y ↑ s ↑ e
#(参考)
# pdf_data、"x"から開始位置、終了位置の推測方法
# ユニコード1文字、6バイトで推測しています。
前歴
PDF(SBI証券 株式等配当金のお知らせ)からCSV(テキスト)を作成する
https://qiita.com/nt1969m/items/8e9d6f3454c2087bf6ec
PDF(SBI証券、割当株式等のお知らせ)からCSV(テキスト)を作成する
https://qiita.com/nt1969m/items/890846d529d08c8edbb2