컴퓨터 102

Python (10) - pytesseract를 이용하여 이미지 안에 있는 글자를 뽑아보자

가끔 우리가 웹사이트의 이미지를 텍스트로 바꿔야 할 때가 있습니다. 이번에는 Tesseract 엔진을 이용하여 이미지를 텍스트로 바꿔보는 방법에 대하여 알아보겠습니다. Tesseract OCR 우선 OCR이란 Optical Character Recognition의 약자로 직역하자면 광학 문자 인식입니다. 사람 혹은 기계가 종이에 작성한 문자를 이미지화하여 기계가 읽을 수 있는 문자로 변환합니다. Tesseract엔진은 광학 문자를 인식할 수 있는 엔진으로 파이썬을 이용하여 해당 엔진을 조작하고, 문자 인식을 하려고 합니다. 아래는 깃허브에 나와있는 문서로 참조하는 것을 추천합니다. https://github.com/madmaze/pytesseract GitHub - madmaze/pytesseract: ..

컴퓨터/Python 2023.01.07

Python (9) - BeautifulSoup를 이용하여 디시인사이드에 웹 크롤링을 해보자

카타르 월드컵이 끝나고 커뮤니티를 실시간으로 볼 수 있는 웹 크롤러가 있으면 어떨까 생각해 보았습니다. F5를 주기적으로 눌러보는 방법도 있으나 크롤링으로 화면이 보이게 하였습니다. 그래서 먼저는 데이터를 크롤링하는 방법에 대하여 알아보겠습니다. 크롤링 먼저 크롤링은 웹상에 존재하는 정보를 수집해 오는 작업입니다. 데이터 수집 방법에는 크게 3가지 방법이 있습니다. HTML 페이지를 가져와 필요한 데이터만 수집하는 방법 OpenAPI를 호출하여 받은 데이터 중 필요한 데이터만 수집하는 방법 프로그램을 이용하여 브라우저를 조작하여 필요한 데이터를 수집하는 방법 여기서 1번 방법을 사용하여 HTML 페이지를 가져오는 방법을 진행하려고 합니다. 디시인사이드 크롤링을 하는 과정 ※ 크롤링 같은 경우 사용 방법에..

컴퓨터/Python 2023.01.03

PHP (3) - exec를 이용하여 파이썬을 연동하자

제가 졸업 연구에서 PHP를 사용한 이유가 파이썬으로 제작한 소스 코드를 연동하여야 합니다. 저같은 경우 AI관련한 부분은 파이썬을 사용하게 되어 유용하게 사용할수 있습니다. PHP에서는 다른 언어에 비하여 간단하게 콘솔을 실행시킬 수 있고 해당 결과들을 웹으로 표현할 수 있습니다. exec 함수 exec 함수는 외부 프로그램을 실행시키는 함수입니다. 정확하게는 PHP에서 터미널을 다루는 함수입니다. 해당 함수에다가 파이썬 명령어를 깔아서 실행할 수 있습니다. 위의 예제는 터미널을 이용하여 'Hello World' 를 출력합니다. 이제 해당 명령어를 통하여 파이썬과 연동을 실행시켜보도록 하겠습니다. 파이썬과 연동하기 1. 기본적인 방법 #hello.py for i in range(5): print(i, ..

컴퓨터/PHP 2023.01.03

PHP (2) - PHP에서 MySQL을 다뤄보자

PHP에서 MYSQL을 다뤄보자 졸업 연구에서 PHP를 서버로 사용하였습니다. 제가 PHP를 졸업 연구에서 사용했던 이유는 PHP의 가장 큰 장점은 SQL과 연동성이라고 생각합니다. 그래서 이번에는 PHP와 MySQL을 한번 연결하는 방법을 알아보겠습니다. SQL 연결 전 초기세팅 SQL을 연결하기 전 객체를 만들어 줘야 합니다. 각각의 객체는 host, user, pw, dbName을 가져와야 하며 SQL에서 제작한 값들을 넣어주면 됩니다. 값을 직접 넣을 수도 있지만 파일 처리를 통하여 아래의 형식처럼 넣는 것도 가능합니다. 파일을 통하여 쉽게 관리할 수 있습니다. fgets 메소드를 사용하여 파일처리를 통하여 가져올 수 있습니다. fgets 메소드는 파일을 한줄씩 읽습니다. 따라서 init.txt를..

컴퓨터/PHP 2023.01.02

PHP (1) - 데이터를 전송해보자 (POST, GET 방식)

졸업 연구를 통하여 PHP를 이용한 웹서버 프로젝트를 하였습니다. PHP 언어를 본격적으로 공부하였는데 조금씩 적어보려고 합니다. HTTP 전송방식에서 데이터를 전송할 때 여러 가지 방식이 있지만 가장 기본적인 두 가지 방식 GET와 POST 방식을 사용할 수 있습니다. 두 가지 방식에 대하여 알아보는 시간을 가져보겠습니다. GET GET 방식은 URL에 키와 값을 입력하여 데이터를 전송하는 방식입니다. URL의 "?" 뒤에서부터 쿼리스트링으로 데이터를 전달합니다. 예시에서는 로그인 정보를 적었는데 실제로 GET 방식을 사용하게 되면 URL이 다 노출되어 사용하면 안 됩니다. 또 다른 단점으로는 GET 방식 같은 경우에는 URL을 이용하여 글자 수 제한이 있습니다. 하지만 GET방식은 여러 번 데이터를 ..

컴퓨터/PHP 2022.12.30

JavaScript (4) - FileReader를 이용하여 이미지 미리보기 구현

웹사이트 특히 게시글 관련으로 만들다보면 첨부파일에 따른 이미지 미리보기 기능이 필요합니다. 이번에는 간단하게 FileReader방식을 이용하여 이미지 미리보기를 구현하도록 하겠습니다. 알아야 할 것 FileReader FileReader는 input 태그중 file타입 혹은 API 요청등으로 전달한 File 또는 Blob 객체를 편리하게 처리할 수 있는 객체입니다. 해당 객체는 사용자의 조작에 따른 이벤트 핸들러를 가지고 있습니다. 여기에서는 이벤트 핸들러를 표를 통하여 소개하려고 합니다. 이벤트 핸들러 설명 onload 읽기 동작이 성공적으로 완료 하였을때 발생한다 onerror 읽기 동작에 에러가 생길때 발생한다. onabort 읽기 동작이 중단될때 발생한다 onloadstart 읽기 동작이 실행될..

Python (8) - Base64 방식을 이용한 이미지 인코딩, 디코딩

졸업연구를 하던중 Base64 방식을 이용한 다양한 인코딩과 디코딩을 접하는 기회가 있었습니다. 해당 글에는 Base64란 무엇인가 그리고 파이썬을 이용한 인코딩, 디코딩을 올려보도록 하겠습니다. Base64 Base64코드는 64개의 문자로만 이루어진 문자 코드입니다. 우리가 일반적으로 사용하는 ASCII 코드는 128가지의 문자로 이루어져 있습니다. 따라서 매칭하여 문자열로 변환할 수 있습니다. 여기서 ASCII 코드를 사용하지 않은 이유는 문자만 이루어져 있지 않기 때문입니다. 문자열로만 전송하는 경우에는 상관이 없으나 인코딩하여 전송하는 경우에 오류가 날 수 있습니다. 안정적으로 인코딩을할 때 사용하기 위하여 해당 문자 코드가 사용됩니다. 안정적으로 변환할 수 있으나 단점 또한 있습니다. 위의 그..

컴퓨터/Python 2022.12.15

git (1) - 깃허브에 데이터를 업로드, 다운로드하자 (초보자 ver)

최근에 프로젝트를 하면서 깃허브에 협업하게 되었습니다. 혼자 했을 때는 폴더에 놓고 다른 폴더를 통하여 이전 소스 코드에 대한 버전 관리만 하면 되었는데 여러명에게서 작업하는 경우에 결국 하나의 컴퓨터에 합해야 한다는 문제가 있고 깃허브를 이용하여 해당 문제를 해결하였습니다. 깃허브에 수정한 데이터를 올리는 방법을 이야기하려 합니다. 깃허브에 데이터를 업로드 및 다운로드 방법git clone https://github.com/kmsbio/kmsbio #다른 리포지터리의 데이터를 가져온다#========================================git add a.txt #a.txt 파일을 추가한다git commit -m 'hello' #hello라는 메시지와 함께 추가한 파일을 git의 인덱..

컴퓨터/git 2022.12.12

Excel - 전역일 계산기를 만들어보자

제가 군대에 있을 때 전산 보직으로서, 또 여러 가지를 만들기 위해 엑셀을 배웠습니다. 간단하게 전역일 계산기를 제작하였는데 만들었던 방법을 소개하려고 합니다. ※ 만드는 방법을 소개시켜드리는 것뿐 제작으로 인한 피해는 본인에게 있습니다. ※ 제가 사용하는 작업 환경은 폴라리스 시트입니다. (그대로 진행하면 상관없어서 해당 프로그램으로 진행하였습니다.) (한셀도 가능합니다) 제작하려고 하는 기능 요약 입영일,전역일,현재 날짜만 알면 아래의 기능을 자동으로 인식시킨다. 복무기간, 한날, 남은 날, 실근무일, 백분율(%) 백분율(%)을 인식하여 바의 형태로 제작한다. 제작 과정 1. 입영일, 전역일, 오늘 날짜를 적어둡니다. 오늘 날짜는 Today() 함수를 이용하여 적고 나머지는 자신의 입대일자와 전역일자..

컴퓨터/기타 2022.08.08

임베디드 - 아두이노(MCU) vs 라즈베리파이(MPU)

언젠가는 꼭 써보고 싶었던 특집인데 그동안 밀어두다가 적게 되었습니다. 임베디드에서 교육용으로 보통 아두이노(ATmega128) 혹은 라즈베리파이(ARM)를 많이 사용합니다. 임베디드에 조금이라도 관심을 가지시는 분들은 아시겠지만 엄연하게 사용하는 역할이 다릅니다. 이번에는 각각의 차이점을 알아보는 시간을 가져보도록 하겠습니다. 우선 시작하기 앞서서 스포 하자면 둘의 가장 큰 차이는 운영체제를 사용할수 있는 유무가 가장 큰 차이점입니다. 아두이노 VS 라즈베리파이 위에서 말한 것과 같이 아두이노와 라즈베리파이의 차이점은 운영체제를 돌릴수 있는 것의 차이입니다. 아두이노 같은 경우에는 외부 프로그램을 사용하여 업로드하면 직접 핀을 제어합니다. 하지만 라즈베리파이 같은 경우에는 운영체제 안에서 직접 프로그래..