GithubHelp home page GithubHelp logo

c-jordi / pdf2data Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 48.75 MB

A pdf segmentation and annotation tool for archival documents.

License: MIT License

Python 50.00% Shell 0.01% HTML 0.79% JavaScript 37.60% SCSS 9.89% CSS 0.17% TypeScript 0.69% Makefile 0.49% Dockerfile 0.35%

pdf2data's Introduction

pdf2data : A pdf segmentation and annotation tool for archival documents.

๐Ÿšง IN DEVELOPMENT ๐Ÿšง

๐Ÿ’ก Vision

Develop an open source and user-friendly tool for technical and non-technical users that performs page, block & textline segmentation and combines both manual & automatic annotation.

๐ŸŽฅ Preview

Preview

๐Ÿ”ฅ Features

  • Structure your work into project and case studies.
  • Upload your pdf files.
  • Annotate the results of the segmentation algorithm using the interactive dashboard.
  • Automate the training of a classification algorithm.
  • Export your results for further analysis.

๐Ÿš€ Quickstart

Development

Start the message broker:

docker-compose up

Start the backend:

source server/venv/bin/activate
make run

Start the worker:

source server/venv/bin/activate
make worker

Start the client:

cd client
yarn start

๐Ÿงฎ Data Composition

Data composition

๐Ÿ“š Stack

Architecture

  • Node.js and React.js deliver the interactive dashboard.
  • Tornado runs the data backend.
  • Celery with a RabbitMQ backend operates the execution of asynchronous tasks.

pdf2data's People

Contributors

c-jordi avatar lusamino avatar

Watchers

 avatar  avatar

pdf2data's Issues

Add all possible font types during feature extraction

So far, only a handful of font types (Calibri, Times New Roman, etc.) are considered for the extraction of features. However, we may encounter many different fonts. We need to implement the following:

  • During feature extraction, identify all possible font types
  • After processing all documents, run another step, over all the fonts encountered, to extract features (font occurrence) for all the types.

This feature will be part of the feature extraction process, contained in server/application/feature.

Enrich Pages table in DB

We need to create one entry per page in the Table DB. The keys to fill in are quite straightforward, and the only question that arises is, when to do it??

  • I do believe the best would be to just do it after the corresponding XML file is extracted. Hence, from the XML we read the number of pages, and we just create one entry per page.
  • But we could also do it after the extraction of features.

Since this is just a matter of commit this to the DB, could you decide @c-jordi when is the best moment and implement it?
Thanks!

Add even more hand crafted features

Despite we will add more complex models to extract features, perhaps add the following extra, to each of the tree levels

  • Pages: percent of page covered, normalized page number
  • Textbox: TBD
  • Lines: TBD

Issue with Textline feature extraction

Running the feature extraction with textline leads to a ValueError.

ValueError: Found array with 0 sample(s) (shape=(0, 1)) while a minimum of 2 is required by AgglomerativeClustering.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.