기본 콘텐츠로 건너뛰기

[2025-07-28] python 에서 html to pdf 변환 비교

[2025-07-28] python 에서 html to pdf 변환 비교 안녕하세요. 클스 입니다. html로 작성된 문서를 RAG를 하기위해서 html을 그대로 사용해도 되지만, 불필요한 테그가 있어 비효율 적입니다. 그렇다고 테그를 제거하면 표 등 레이아웃이 깨지게 됩니다. 일반적으로   pdf가 많이 사용됩니다. 그래서 macos에서 많이 사용하는 2개의 라이브러리를 비교해보고자 합니다. 1. html 을 바로 변환하는 방법 :  weasyprint    [장점] 가볍다. 2. html 을 브라우저로 열어서 변환하는 방법 :  playwright       [장점] 풍부하게 css를 처리한다. 코드 ###### html to pdf ######### ''' 외부망에서 해야 함 brew install pango uv pip install weasyprint ''' from weasyprint import HTML html_file = '~/doc/test.html' # 1. 문자열 경로를 Path 객체로 만듭니다. path_obj = Path ( html_file ) # 2. .with_suffix() 메서드로 확장자를 변경합니다. pdf_file = path_obj .with_suffix( '.pdf' ) HTML ( filename = html_file ). write_pdf ( pdf_file ) ''' 외부망에서 해야함. # 1. Playwright 라이브러리 설치 uv pip install playwright # 2. Playwright가 제어할 브라우저(Chromium 등) 설치 (라이브러리 엄청 크네) python -m playwright install ''' import asyncio from pathlib import Path from playwright . async_api import as...

[2025-07-21] Intel Mac 2019 에서 embedding 해보기

Intel Mac 2019 에서 embedding 해보기 작성일 : 2025-07-21 안녕하세요. 클스 입니다. 이걸 왜 하나 싶겠지만, 난 아직 2019년형 인텔 CPU 기반 Mac을 사용하고 있습니다. 다 발전하는데 제 맥북은 그대로네요.  그래도 궁금한건 못참으니 해봐야 겠죠 문제 : postgresql에 pg_vector로 난잡한 주소를 vector화 한다음 검색해보려고 합니다. 그런데 벡터화를 하려면 embedding 모델을 돌려야 하는데, 난 이미 python 3.14를 설치했고, 그런데 인텔 맥에서  sentence_transformers 를 사용하려니 "인텔 맥"은 지원 안되네요. 그래도 아래와 같이 지원됩니다. ''' file : emb_1.py sentence_transformers, torch는 intel mac 에서는 python 3.12.4 까지만 지원 그래서 가상환경은 python 3.12.4를 생성해서 실행 * 프로젝트 폴더 생성 $ mkdir -p ~/example/test1 $ cd ~/example/test1 * 프로젝트 초기화 $ uv init --no-workspace * python 설치 및 가상환경 구축 $ uv python install 3.12.4 $ uv venv -p 3.12.4 .venv-3.12.4 $ source .venv-3.12.4/bin/activate * package 설치 $ uv pip uninstall numpy torch transformers sentence-transformers $ uv pip install "numpy<2.0" "transformers==4.41.2" torch sentence-transformers $ uv pip install ipykernel * 소스 작성 : emb_1.py * 실행 : python ./emb_1.py ''...

[2025-07-15] Mac, Window 파일 조합형식 차이 (Mac : NFD, Window: NFC)로 삽질한 썰!

Mac, Window 파일 조합형식 차이 (Mac : NFD, Window: NFC) 안녕하세요. 클스 입니다. 문제 상황 - 저는 회사에서 맥을 사용하고, 다른 사람은 윈도우를 사용합니다. 회사에 공유서버는 있어서 서로 공유서버를 통해 파일을 공유합니다. - AI Bot를 만들고 있는데, 회사의 문서를 학습하여 질문에 답변을 제공하는 기능입니다. - 문서(docx, pdf, txt)를 가져와서 Vector Store에 학습하는데, 문서가 자주 변하니 필요한 문서만 학습하도록 하기 위해, 로컬 폴더를 SQLite로 DB활르 했습니다. - 폴더를 읽어 문서를 files 테이블에 넣고 이렇게 검색하니 잘 나왔습니다. SELECT * FROM vector_store_files vs LEFT JOIN vector_store_files f ON vs . vs_id = f . vs_id WHERE LOWER ( f . file_name ) LIKE '%취업%' ; - 취업에 관련된 문서가 전부 나왔는데,  취업.doc  파일이 보이기에, 저는 맥에서 워드를 열어서 docx로 저장했습니다. - 그리고 개발한 update_vector_store_file 을 이용해  취업.doc  파일을  취업.docx  파일로 교체해서 vector store에 추가했습니다. 물론 DB도 업데이트가 되었겠죠? - 확인해보려고 아래 쿼리를 실행하니 결과가 나오지 않습니다. 파일이 안올라갔나? 내가 쿼리를 잘못 만들었나? 데이터 소스를 잘못 설정했나? 갖가지 고민을 했습니다. SELECT * FROM vector_store_files vs LEFT JOIN vector_store_files f ON vs . vs_id = f . vs_id WHERE LOWER ( f . file_name ) LIKE '%취업%' ; - 그래서 docx 파일을 Remote Desktop으로 윈도우에 복사, 붙혀넣기를 해...

[2025-06-10] 맥북(2019, Intel)이 외부 모니터 연결시 버벅거림 해결 방법

[2025-06-10] 맥북(2019, Intel)이 외부 모니터 연결시 버벅거림 해결 방법 안녕하세요. 클스 입니다. 얼마전 6년째 사용하고 있는 맥북프로(2019, intel)가 갑자기 버벅거려서 아무 작업을 할 수 없었습니다. 업그레이드도 해보고, 업데이트도 해보고, SMC 리셋도 해보고 했지만 상태는 여전했습니다. * 제가 해결한 방법 [현상] 맥북이 외부 모니터 연결시 버벅거림 [원인] 애플 정품 어댑터에 전원, HDMI 를 같이 연결해서 왼쪽에 꼽아서 사용하고 있음. kernel_task의 cpu가 800% 를 치고 있음. 발열이 너무 심할 때 추가 부하를 가상으로 주어 chipset이  타는 것을 방지하려고 애플에서 task를 가상으로 만들어 부하를 높힌다.  그래서 다른 작업 못하게 함. 라른 설명들이 있음(확인 못함) 일단 팬을 돌려서 열을 식히는 것이 가장 중요합니다. 그러나 한쪽에 전부 꼽으면 발열이 더 심하게 발생합니다. [해결방법] 왼쪽에 hdml, 오른쪽에 파워를 꼽으세요. ^^ 맥 유틸 > 활성상태보기 그래서 편안한 상태로 돌아와서 잘 사용하고 있습니다. 맥북 최신걸로 바꾸고 싶다~~ 감사합니다.

[2025-04-16(수)] OpenAI gpt-4.1 시리즈 발표, Anthropic Claude에 대한 생각

OpenAI gpt-4.1 시리즈 발표, Anthropic Claude에 대한 생각 안녕하세요. 클스 입니다. 4/15일자로 openai가 gpt-4.1 시리즈를 발표 했습니다. 현재는 api로만 사용가능합니다. 점차 웹/앱 사용자에게 오픈 될거라 생각 됩니다. 비용상 문제로 4.1-mini, nano를 사용해서 chatbot을 만들어 보고 있습니다. 4o 시리즈 보다는 확실히 빠르고, 답변의 정확도는 올라간 것 같습니다. 앤트로픽 클로드와 비교를 많이 하는데, 업무 시스템 혹은 AI 솔루션을 개발하는 입장에서는 어떤 생태계를 제공하는가가 주요한 결정 입니다. AI관련 인력을 충분히 보유한 회사의 경우는 어떤걸 사용해도 좋을 결과를 가지겠지만 일반적인 챗봇 개발 절차를 보면 다음과 같이 볼 수 있습니다. 1. 문서를 준비한다. 대부분 pdf, text, markdown 2. 문서를 파싱해서 vectordb에 올린다.     - 별도 벡터디비 구성 필요. 어떤 db를 선택할지 고민 필요     - 어떤 Parser를 사용할지, 텍스트 오버래핑은 얼마가 적당한지 고민 필요        (회사의 문서가 워낙 많고, 다양하면 하나하나 테스트 해서 좋은걸 선택하는 것이 어렵다)     - 유사도 측정은 어떤 알고리즘을 써야할지 고민 필요     - llamaindex도 고민해야 함. 3. RAG flow를 만든다.     - langchain을 쓸지, 각 AI 벤더에서 제공하는 sdk를 쓸지 고민 필요       (대부분 락인이 되지 않으려면 langchain을 사용하면 좋지만, 벤더에 특화면 기능 적용이 늦음) 4. 챗봇 UI 앱을 만든다.     - 답변이 text 로 구성되다 보니. 그래프, 이미지등 복합적인 컨텐츠를 재배치 하여 표현하기 상당히 어렵네요. (이건 제가 실력이 모자라서 .. 패스) ...

[2024-10-19] iPhone, iPad에서 ChatGPT로 PDF 생성시 한글 깨짐 해결 방법

iPhone, iPad에서 ChatGPT로 PDF 생성 시 한글 깨짐 해결 방법