A python library for extracting parts from sheetmusic pdfs
Project description
sheatless - A python library for extracting parts from sheetmusic pdfs
Sheatless, a tool for The Beatless to become sheetless. Written and managed by the web-committee in the student orchestra The Beatless. Soon to be integrated in taktlaus.no.
API
PdfPredictor
class PdfPredictor():
def __init__(
self,
pdf : BytesIO | bytes,
instruments=None,
instruments_file=None,
instruments_file_format="yaml",
use_lstm=False,
tessdata_dir=None,
log_stream=sys.stdout,
use_multiprocessing=False,
):
...
def parts(self):
for ...:
yield {
"name": "<part name>",
"instruments": ["<instrument name", ...],
"fromPage": "<from page>",
"toPage": "<to page>",
}
Arguments for __init__
:
pdf
- PDF file objectinstruments
(optional) - Dictionary of instruments. Will override any provided instruments file.instruments_file
(optional) - Full path to instruments file or instruments file object. Accepted extensions: .yaml, .yml, .jsoninstruments_file_format
(optional) - Format of instruments_file if it is a file object. Accepted formats: yaml, json- If neither instruments_file nor instruments is provided a default instruments file will be used.
use_lstm
(optional) - Use LSTM instead of legacy engine mode.tessdata_dir
(optional) - Full path to tessdata directory. If not provided, whatever the environment variable TESSDATA_DIR will be used.log_stream
(optional) - File stream log output will be sent to. Can be set toNone
to disable logging.use_multiprocessing
(optional) - If set toTrue
, detection will be performed in a separate process.
processUploadedPdf
def processUploadedPdf(pdfPath, imagesDirPath, instruments_file=None, instruments=None, use_lstm=False, tessdata_dir=None):
...
return parts, instrumentsDefaultParts
which will be available with
from sheatless import processUploadedPdf
Arguments description here:
Argument | Optional | Description |
---|---|---|
pdfPath | Full path to PDF file. | |
imagesDirPath | Full path to output images. | |
instruments_file | (optional) | Full path to instruments file. Accepted formats: YAML (.yaml, .yml), JSON (.json). |
instruments | (optional) | Dictionary of instruments. Will override any provided instruments file. |
If neither instruments_file nor instruments is provided a default instruments file will be used. | ||
use_lstm | (optional) | Use LSTM instead of legacy engine mode. |
tessdata_dir | (optional) | Full path to tessdata directory. If not provided, whatever the environment variable TESSDATA_DIR will be used. |
Returns description here:
Return | Description |
---|---|
parts | A list of dictionaries { "name": "name", "instruments": ["instrument 1", "instrument 2"...] "fromPage": i, "toPage": j } describing each part |
instrumentsDefaultParts | A dictionary { ..., "instrument_i": j, ... } , where j is the index in the parts list for the default part for instrument_i . |
predict_parts_in_pdf
def predict_parts_in_pdf(
pdf : BytesIO | bytes,
instruments=None,
instruments_file=None,
instruments_file_format="yaml",
use_lstm=False,
tessdata_dir=None,
):
...
return parts, instrumentsDefaultParts
Arguments:
- pdf - PDF file object
- instruments (optional) - Dictionary of instruments. Will override any provided instruments file.
- instruments_file (optional) - Full path to instruments file or instruments file object. Accepted extensions: .yaml, .yml, .json
- instruments_file_format (optional) - Format of instruments_file if it is a file object. Accepted formats: yaml, json
- If neither instruments_file nor instruments is provided a default instruments file will be used.
- use_lstm (optional) - Use LSTM instead of legacy engine mode.
- tessdata_dir (optional) - Full path to tessdata directory. If not provided, whatever the environment variable TESSDATA_DIR will be used.
Returns:
- parts - A list of dictionaries
{ "name": "name", "instruments": ["instrument 1", "instrument 2"...] "fromPage": i, "toPage": j }
describing each part - instrumentsDefaultParts - A dictionary
{ ..., "instrument_i": j, ... }
, where j is the index in the parts list for the default part for instrument_i.
predict_parts_in_img
def predict_parts_in_img(img : io.BytesIO | bytes | PIL.Image.Image, instruments, use_lstm=False, tessdata_dir=None) -> typing.Tuple[list, list]:
...
return partNames, instrumentses
Arguments:
- img - image object
- instruments - dictionary of instruments
- use_lstm (optional) - Use LSTM instead of legacy engine mode.
- tessdata_dir (optional) - Full path to tessdata directory. If not provided, whatever the environment variable TESSDATA_DIR will be used.
Returns:
- partNames - a list of part names
- instrumentses - a list of lists of instruments for each part
Example docker setup
Sheatless requires tesseract and poppler installed on the system to work. An example docker setup as well as integration of the library can be found in sheatless-splitter.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
sheatless-1.4.0.tar.gz
(21.5 kB
view details)
Built Distribution
sheatless-1.4.0-py3-none-any.whl
(22.0 kB
view details)
File details
Details for the file sheatless-1.4.0.tar.gz
.
File metadata
- Download URL: sheatless-1.4.0.tar.gz
- Upload date:
- Size: 21.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.22.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | aa0d4dae52c15fcd273f4ff98eea8c673ca0d5bd0bfe736f39a0f6d41ab1cf5e |
|
MD5 | 0d5c15a28b276079b45c195cae8670b6 |
|
BLAKE2b-256 | 393c80580e0eb0e5e1343f5b2b55f33c80429d103c9106820cd48bd6a5c2561c |
File details
Details for the file sheatless-1.4.0-py3-none-any.whl
.
File metadata
- Download URL: sheatless-1.4.0-py3-none-any.whl
- Upload date:
- Size: 22.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.22.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 452fc79de0336431d5e5149d572017cb814d30475334f64b343d77143d7e66ea |
|
MD5 | 22c0ec3d72a8e1150deaccfe8e61675b |
|
BLAKE2b-256 | 916742c22b38292e7def87d9f97ac5305224c93b434524281163885c131bf5cb |