0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SBI証券の.pdfを.csvに変換する

Last updated at Posted at 2025-08-15

はじめに

私は法人口座(一般口座)で資産を運用しています。
それゆえに、このパッケージは、
個人口座(特定口座やNISA口座)特有のデータには
対応していない可能性があります。
この点については、ご容赦ください。

対応.pdf

株式等配当金のお知らせ
割当株式等のお知らせ
株式 取引報告書 # 2025-09-27
公社債等募集 取引報告書
公社債利金のお知らせ
有価証券デリバティブ取引等に関する個別取引終了通知書(兼支払通知書) # 2025-09-26

使い方

手順.r
install.packages("devtools")
library("devtools")
install_github("nt1969m/sbitools")
library("sbitools")

# 同じ種類の.pdf$ごとに、個別のディレクトリーに格納する。※ここ重要!

# setwd() # ".pdf$"のあるディレクトリーを設定してね!
  # R本体の場合、  「メニュー」 → 「その他」 → 「作業ディレクトリの変更」
  # RStudioの場合、「メニュー」→「Session」→「Set Working Directory」→「Choose Directory」
getwd()
変数 <- read_sbi() 	# ".pdf$"のあるディレクトリーに.csv$が作成されます。
変数 |> View() 		# 変換結果を確認 

pf(パターン・ファイル)

未対応の.pdfは、独自pf(パターン・ファイル)を作成した上で実行して下さい。

改訂履歴

2025-09-27(土) 対応.pdfを追加
 株式 取引報告書
2025-09-27(土) パッケージ改訂・pf、セミコロン(;)にて段(上段・中段・下段)区切り
 第5列 y 各列のpdf_data、"y"を指定(1段目・2段目・3段目)
 第9列 y2 各列のpdf_data、"y"を指定(2段目)
  ※第5列にて2段目(未)指定の場合のみ
2025-09-26(金) 対応.pdfを追加
 有価証券デリバティブ取引等に関する個別取引終了通知書(兼支払通知書)
2025-09-26(金) パッケージ改訂・pf、コロン(:)にて範囲指定
 第5列 y 各列のpdf_data、"y"を指定(上段)
 第6列 s 各列のpdf_data、"x"の抽出開始位置を指定(>=)
 第7列 e 各列のpdf_data、"x"の抽出終了位置を指定(<) 
  ※第6列にて範囲(未)指定の場合のみ
 第9列 y2 各列のpdf_data、"y"を指定(2段目)

独自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;166,175,171,171,171,202,202,202,202,202,216"	"1:317,1:317,1:317,317:441,441:999,1:126,126:227,227:329,329:445,445:999,227:445"	""	",h,ymd,h,h,s,s,s,s,s,ymd"	"" # 1
#
# 2行目	→	↓
1	9	割当株式等のお知らせ	"銘柄名,銘柄コード,権利区分,権利割当日,分割比率,加入者名,お預り数量,割当数量,合計数量"	"126,135,126,126,126,180,180,180,180"	"1:225,1:225,225:300,300:389,389:999,1:213,213:291,291:370,370:999"	""	",h,,ymd,h,,h,h,h"	"" # 2
#
# 3行目	→	↓
2	14	公社債等募集	"ご清算日,銘柄名,銘柄コード,取引区分,額面,単価,約定金額,経過利子,手数料,消費税等,ご清算金額,空欄1,空欄2,空欄3
"	"64,118:126,135,121,112,112,112,126,126,126,126,135,144,153"	"489:999,1:158,1:158,158:172,172:298,298:424,424:999,172:298,298:345,345:424,424:999,172:999,1:999,1:999"	"" "ymd,h,h,,h,h,s,s,s,s,s,,"	"" # 3
#
# 4行目	→	↓
2	12	公社債利金のお知らせ	"銘柄名,銘柄コード,利率または償還単価,期数,税区分,利払日または償還日,備考,額面(千円),利金または償還金,所得税,地方税,お受取金額"	"91:100,100,94,94,94,94,0,126,126,126,135,130;171:180,180,175,175,175,175,0,207,207,207,216,211"	"28:135,135:250,250:345,345:379,379:412,412:516,516:999,1:133,133:248,248:379,248:379,379:999"	""	",h,h,,,ymd,,h,s,s,s,s"	"" # 4
#
# 5行目	→	↓
1	20	"有価証券デリバティブ取引等に関する個別取引終了通知書(兼支払通知書)"	"約定日,決済日,対象資産コード,対象資産,数量,オプションタイプ,オプションスタイル,権利行使,オプション付与者,オプション取得者,オプションプレミアム,オプション・プレミアム支払日,権利行使価格,権利行使日(評価日),決済価格,オプション決済金額,決済方法,取引所,自己/委託,損益"	"280:301,280:301,280:301,280:301,280:301,280:301,280:301,280:301,359:375,359:375,359:375,359:375,359:375,359:375,359:375,434:450,434:450,434:450,434:450,434:450"	"1:130,130:235,235:279,279:472,472:499,543:610,610:729,729:999,48:160,160:220,220:332,378:484,447:521,568:637,637:714,1:102,193:301,301:437,437:449,449:554"	""	"ymd,ymd,h,,h,,,,,,s,ymd,h,ymd,h,s,,,,s"	""	# 5
#
# 6行目	→	↓
3	12	"株式"	"約定日,ご精算日,銘柄名,銘柄コード,取引区分,株数,単価,約定金額,手数料,消費税等,ご清算金額,空欄"	"64,64,109,126,121,112,112,112,126,126,126,135;64,64,144:153,162,157,148,148,148,162,162,162,171;64,64,180:189,198,193,184,184,184,198,198,198,207"	"403:489,489:999,28:158,28:158,158:170,170:298,298:423,423:999,170:298,298:423,423:999,170:999"	""	"ymd,ymd,,h,,h,h,h,s,s,s,"	""	# 6
# 以下余白

.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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?