검색 가능한 PDF를 만들기 위한 오픈 소스 OCR JavaScript API
검색 가능한 PDF를 만들고 OCR(광학 문자 인식)을 수행하며 이미지(PNG, JPEG)와 PDF 파일 모두에서 텍스트를 추출하는 선도적인 JavaScript OCR 라이브러리.
Scribe.js란 무엇인가요?
오늘날 디지털 세계에서는 오류 메시지 스크린샷, 문서 사진, 프레젠테이션 슬라이드, 혹은 영리한 텍스트가 포함된 밈 등 이미지 안에 방대한 양의 귀중한 정보가 담겨 있습니다. 이 텍스트를 수동으로 전사하는 것은 번거롭고 오류가 발생하기 쉬운 과정입니다. 여기서 광학 문자 인식(OCR) 기술이 구원책이 되며, Scribe.js는 웹 프로젝트에 OCR을 통합하는 가장 개발자 친화적인 방법 중 하나를 제공합니다. Scribe.js는 이미지와 PDF 파일 모두에서 OCR을 수행하고 텍스트를 추출하는 오픈 소스 JavaScript 라이브러리입니다. 많은 OCR 솔루션이 백엔드 처리나 외부 API 호출을 필요로 하는 반면, Scribe.js는 완전히 클라이언트 측에서 실행되어 데이터에 대한 완전한 제어권을 제공하고 텍스트 인식 작업에 대한 서버 비용을 없애줍니다.
Scribe.js는 Google Cloud Vision API용 경량 JavaScript 클라이언트입니다. 모든 OCR 작업은 사용자의 브라우저 또는 Node.js 환경에서 직접 수행되어 프라이버시를 보장하고 서버 인프라 비용을 절감합니다. 이 라이브러리는 이미지 전처리, 이미지에 대한 통합 워크플로, 자동 감지, PDF 레이어링, 신뢰도가 낮은 페이지 필터링, OCR 엔진 캐시 등 다양한 기능을 지원합니다. 라이브러리는 최신 JavaScript ESM(ECMAScript Modules)을 사용하여 구축되었으며, 복잡한 빌드 구성 없이 현대 웹 개발 워크플로에 쉽게 통합할 수 있습니다. 이러한 개발자 중심 접근 방식 덕분에 몇 줄의 코드만으로 문서에서 텍스트를 추출하기 시작할 수 있습니다.
Scribe.js 시작하기
Scribe.js를 설치하는 권장 방법은 npm을 사용하는 것입니다. 원활한 설치를 위해 다음 명령을 사용하십시오.
npm을 통해 Scribe.js 설치
npm install scribe.js-ocr 수동으로 설치할 수도 있습니다; 최신 릴리스 파일을 GitHub 저장소에서 직접 다운로드하십시오.
이미지에서 텍스트 인식
Scribe.js 라이브러리의 가장 기본적인 사용 사례는 이미지 파일에서 텍스트를 추출하는 것입니다. 이 라이브러리는 다양한 이미지 형식을 지원하며 단일 이미지와 여러 이미지를 한 번에 배치 처리할 수 있습니다. 다음은 JavaScript 앱 내에서 이미지 URL로부터 텍스트를 추출하는 기본 예제입니다. 이 스니펫은 Scribe.js가 제공하는 간단한 API를 보여줍니다. extractText 메서드는 이미지 URL 배열을 받아 인식된 텍스트와 함께 해결되는 Promise를 반환합니다.
JavaScript 라이브러리를 사용하여 이미지에서 텍스트를 추출하는 방법?
import scribe from 'scribe.js-ocr';
// Extract text from a single image
scribe.extractText(['https://example.com/sample-image.png'])
.then((result) => {
console.log('Extracted text:', result);
})
.catch((error) => {
console.error('OCR failed:', error);
});
JavaScript로 검색 가능한 PDF 만들기
Scribe.js의 가장 강력한 기능 중 하나는 기존 PDF 파일에 보이지 않는 텍스트 레이어를 추가할 수 있다는 점입니다. 이 기능은 이미지 기반 PDF를 시각적 모양을 변경하지 않고 검색 가능한 문서로 변환합니다. PDF에 텍스트 레이어가 추가되면 사용자는 문서 내에서 특정 단어나 구문을 검색하고, 이미지처럼 보이는 부분에서 텍스트를 선택 및 복사하며, 스캔된 문서에 스크린 리더와 접근성 도구를 사용할 수 있고, 검색 엔진 및 문서 관리 시스템에 의해 인덱싱이 가능해지는 등 다양한 이점을 제공합니다.
JavaScript 라이브러리를 사용하여 검색 가능한 PDF 문서를 만드는 방법?
import scribe from 'scribe.js-ocr';
// Add searchable text layer to an image-based PDF
async function makeSearchablePDF(inputPdfUrl) {
try {
// First, perform OCR on the PDF
const ocrResult = await scribe.extractText([inputPdfUrl]);
// Then create a new PDF with the text layer embedded
const searchablePdf = await scribe.createSearchablePDF(
inputPdfUrl,
ocrResult
);
// The resulting PDF maintains the original appearance
// but now contains selectable, searchable text
return searchablePdf;
} catch (error) {
console.error('Failed to create searchable PDF:', error);
throw error;
}
}
JS를 통한 고급 문서 텍스트 감지
문서가 조밀한 텍스트와 복잡한 레이아웃(예: 스캔한 책 페이지나 PDF 내보내기)을 가진 이미지의 경우, Scribe.js 라이브러리는 "Document Text Detection" 기능을 제공합니다. 이 기능은 단락, 단어 및 줄 바꿈 감지기 등을 포함한 훨씬 풍부한 정보를 제공하여 원본 문서의 구조를 보존하는 데 도움이 됩니다. 이는 양식, 청구서 또는 다중 열 레이아웃과 같이 원본 자료의 레이아웃과 구조가 중요한 애플리케이션에 매우 유용합니다.
JavaScript 앱 내에서 고급 텍스트 감지를 수행하는 방법?
const Scribe = require('scribejs');
const serviceAccountKey = require('./path-to-your-key.json');
const scribe = new Scribe(serviceAccountKey);
const documentImageUrl = 'https://example.com/scanned-invoice.png';
// Use the `documentText` method for advanced detection
scribe.documentText(documentImageUrl)
.then(fullTextAnnotation => {
// The fullTextAnnotation object contains detailed data
console.log('Full Document Text:');
console.log(fullTextAnnotation.text); // The plain text of the entire document
// You can also iterate through pages, blocks, paragraphs, and words
fullTextAnnotation.pages.forEach(page => {
page.blocks.forEach(block => {
console.log('\nBlock Confidence:', block.confidence);
block.paragraphs.forEach(paragraph => {
console.log(paragraph.text);
});
});
});
})
.catch(error => {
console.error('Document OCR Error:', error);
});
JavaScript로 다중 파일 일괄 처리
실제 애플리케이션에서는 소프트웨어 전문가가 여러 문서를 동시에 처리해야 할 때가 많습니다. Scribe.js는 기본적으로 배치 처리를 지원하여 사용자가 JavaScript 애플리케이션 내에서 한 번의 작업으로 여러 이미지 또는 PDF에서 텍스트를 추출할 수 있습니다. 다음 예제는 소프트웨어 개발자가 JavaScript 명령을 사용하여 문서 배치를 처리하는 방법을 보여줍니다.
JavaScript 라이브러리를 사용하여 문서 배치를 처리하는 방법?
import scribe from 'scribe.js-ocr';
// Process multiple documents at once
async function batchProcess(fileUrls) {
try {
// Pass an array of URLs to process multiple files
const results = await scribe.extractText(fileUrls);
// Results are returned in the same order as input
results.forEach((text, index) => {
console.log(`Document ${index + 1} text:`, text);
});
return results;
} catch (error) {
console.error('Batch processing failed:', error);
throw error;
}
}
// Process a batch of documents
const documents = [
'https://example.com/receipt1.jpg',
'https://example.com/receipt2.jpg',
'https://example.com/invoice.pdf'
];
batchProcess(documents)
.then(allText => {
console.log('All documents processed successfully');
});