국가기술표준원 (2009-12-28), “책의 명칭 및 편집 일반 용어”, KS X 0003 내용을 참조하여 책에 대한 한국어 표준용어 사전을 이해한다.
책의 명칭과 편집 일반용어가 필요한 곳은 일반 책을 비롯하여 신문, 잡지, 교과서, 사전, 리플릿, 문서, 인쇄 광고물 등 종이 출판물과 웹북, 웹진, 모바일 콘텐츠 등 전자적 표기에 널리 쓰이는 모든 표현 매체를 아우른다.
library(tidyverse)
library(slickR)
library(pdftools)
pdf_convert("data/KSX0003_20091228.pdf",format = 'png',verbose = FALSE) book_pdf <-
한국어 표준책 용어 및 편집 일반 용어를 직접 살펴볼 수 있도록 준비한다.
# book_pdf_tbl <- tibble(page = glue::glue("fig/book/{book_pdf}") )
#
# book_pdf_tbl %>%
# write_rds("data/book_pdf_tbl.rds")
read_rds("data/book_pdf_tbl.rds")
book_pdf_tbl <-
slickR(book_pdf_tbl$page, height = 600)
책은 다음과 같은 구성을 갖고 있다.
PDF에서 바로 표를 추출할 경우 기계판독 가능한 표이기는 하지만 형태가 뭉개져서 제대로 사용할 수 없다.
library(tabulizer)
list()
table_result <-
# locate_areas(file = "data/KSX0003_20091228.pdf", pages = 5)
for (i in c(5, 7, 9, 10:11, 13, 15:21)){
extract_tables("data/KSX0003_20091228.pdf",
out <-page = i,
encoding = "UTF-8",
guess = FALSE,
method = 'stream',
area = list(c(108.70328, 65.78973, 697.26248, 527.02796)))
as.data.frame(out)
table_result[[i]] <-
}
5]] %>%
table_result[[ reactable::reactable()
이런 문제를 PDF 파일으로 워드로 변환시킨 후에 워드에서 표를 추출하는 방식을 동원한다. 자세한 사항은 워드 파일에서 표(table) 추출 하는 방식을 참고한다.
PDF를 워드파일로 변경한 후에 officer
팩키지의 도움으로 테이블을 추출한다. 그리고 나서, 표를 추출한다.
library(officer)
library(reactable)
officer::read_docx("data/KSX0003_20091228.docx")
book_docx <- docx_summary(book_docx) %>% as_tibble()
book_content <-
# book_content
book_content %>%
table_cells <- filter(content_type %in% "table cell") %>%
as_tibble()
table_cells %>%
cover_tbl <- filter(doc_index == 89) %>%
select(text, row_id, cell_id) %>%
pivot_wider(names_from = cell_id, values_from = text) %>%
select(-row_id)
cover_tbl %>%
cover_first_tbl <- set_names(cover_tbl %>% slice(1)) %>%
filter(row_number() != 1) %>%
select(1,2,4,3)
cover_first_tbl
# A tibble: 13 x 4
순 `용 어` `대응 영어` `용어 정의`
<chr> <chr> <chr> <chr>
1 1 앞표지 front cover 책의 맨 겉장. 속장을 보호하기 위해 책 바깥쪽 앞뒤에 붙여 놓은 것으로,~
2 2 표제 title 책의 본문 전체 내용을 압축, 상징적으로 앞표지 등에 표시한 제목.~
3 3 책섶 gusset 책의 등쪽 제본 재료를 앞표지까지 연결하여 표지를 단단하게 받쳐주도록 한 ~
4 4 모서리 corner 앞표지의 상하 귀퉁이. 양장본에서는 천이나 가죽을 표지 양 끝 모서리에 삼~
5 5 표지턱 square 책 본문 속장과 표지 앞마구리 및 위·아래쪽에 튀어나온 난간 부분으로 양장~
6 6 책꼬리 tail edge 제본된 책의 맨 아래 밑쪽의 마구리 부분.
7 7 도랑 groove 양장본의 두꺼운 앞<U+2219>뒤 표지와 책등의 경계에 도랑 모양의 골을 만들어 표지~
8 8 머리챙 awning/visor 양장본의 책등쪽 위와 아래의 튀어나온 부분. 책의 머리띠를 보호하는 챙과 ~
9 9 등글자 back title 책등이나덧표지,케이스의등쪽에넣는문자. 표제, 저자, 출판사 등의 표시.~
10 10 등턱 joint 양장 제본에서, 책 표지의 도랑과 책등 모서리의 튀어나온 부분으로 일명 ‘~
11 11 책등 spine/back 책 앞쪽 마구리의 반대 뒤쪽 부분. 양장본에서는 둥글거나 편편하게 마름하며~
12 12 책목 book neck 책의 본문 속장과 등쪽 위·아래 양 끝의 접속 부위.~
13 13 갈피끈 book-mark/ tassel/ ~ 책장 속에 끼워 넣은 가는 끈으로 읽던 곳이나 필요한 지면을 다시 찾을 때~
책 외부(I) 명칭을 살펴보면 다음과 같다.
%>%
cover_first_tbl reactable::reactable(
defaultColDef = colDef(
header = function(value) gsub(".", " ", value, fixed = TRUE),
cell = function(value) format(value, nsmall = 1),
align = "center",
minWidth = 70,
headerStyle = list(background = "#f7f7f8")
),columns = list(
colDef(minWidth = 30), # 50% width, 200px minimum
순 =`용 어` = colDef(minWidth = 100), # 25% width, 100px minimum
`용어 정의` = colDef(minWidth = 500) # 25% width, 100px minimum
),bordered = TRUE,
highlight = TRUE,
filterable = TRUE
)
워드 파일에서 이미지를 추출하는 방식은 워드 파일 압축을 풀면된다. 그렇게 하기 위해서 KSX0003_20091228.docx
파일명을 KSX0003_20091228.zip
으로 바꾼 후에 압축을 풀어준다. 그러면 word/media
디렉토리에 이미지가 저장된다.
library(magick)
image_read("data/KSX0003_20091228/word/media/image1.jpeg")
front_img <- front_img
책 외부 명칭(II)을 살펴보면 다음과 같다.
table_cells %>%
cover_ii_tbl <- filter(doc_index == 116) %>%
select(text, row_id, cell_id) %>%
pivot_wider(names_from = cell_id, values_from = text) %>%
select(-row_id)
cover_ii_tbl %>%
cover_second_tbl <- set_names(cover_tbl %>% slice(1)) %>%
filter(row_number() != 1) %>%
select(1,2,4,3)
%>%
cover_second_tbl reactable::reactable(
defaultColDef = colDef(
header = function(value) gsub(".", " ", value, fixed = TRUE),
cell = function(value) format(value, nsmall = 1),
align = "center",
minWidth = 70,
headerStyle = list(background = "#f7f7f8")
),columns = list(
colDef(minWidth = 40), # 50% width, 200px minimum
순 =`용 어` = colDef(minWidth = 100), # 25% width, 100px minimum
`대응 영어` = colDef(minWidth = 150), # 25% width, 100px minimum
`용어 정의` = colDef(minWidth = 500) # 25% width, 100px minimum
),bordered = TRUE,
highlight = TRUE,
filterable = TRUE
)
워드 파일에서 이미지를 추출하는 방식은 워드 파일 압축을 풀면된다. 그렇게 하기 위해서 KSX0003_20091228.docx
파일명을 KSX0003_20091228.zip
으로 바꾼 후에 압축을 풀어준다. 그러면 word/media
디렉토리에 이미지가 저장된다.
image_read("data/KSX0003_20091228/word/media/image2.jpeg")
second_img <- second_img
책의 내부 순서 및 명칭을 살펴보면 다음과 같다.
144_tbl <- table_cells %>%
content_ filter(doc_index == 144) %>%
select(text, row_id, cell_id) %>%
pivot_wider(names_from = cell_id, values_from = text) %>%
select(-row_id)
147_tbl <- table_cells %>%
content_ filter(doc_index == 147) %>%
select(text, row_id, cell_id) %>%
pivot_wider(names_from = cell_id, values_from = text) %>%
select(-row_id)
bind_rows(content_144_tbl, content_147_tbl)
content_tbl <-
content_tbl %>%
content_tbl <- set_names(cover_tbl %>% slice(1)) %>%
filter(row_number() != 1) %>%
select(1,2,4,3)
%>%
content_tbl reactable::reactable(
defaultColDef = colDef(
header = function(value) gsub(".", " ", value, fixed = TRUE),
cell = function(value) format(value, nsmall = 1),
align = "center",
minWidth = 70,
headerStyle = list(background = "#f7f7f8")
),columns = list(
colDef(minWidth = 40), # 50% width, 200px minimum
순 =`용 어` = colDef(minWidth = 100), # 25% width, 100px minimum
`대응 영어` = colDef(minWidth = 150), # 25% width, 100px minimum
`용어 정의` = colDef(minWidth = 500) # 25% width, 100px minimum
),bordered = TRUE,
highlight = TRUE,
filterable = TRUE
)
데이터 과학자 이광춘 저작
kwangchun.lee.7@gmail.com