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$に変換する

Posted at

使い方

手順.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

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?